jueves, 2 de mayo de 2019

elaboracion de un programa

Iniciando el proceso de programación

Resultado de imagen para elaboracion de un programa
Programa y propuesta curricular Al iniciar la tarea de elaboración del programa de una asignatura, lo primero que debemos tener en cuenta es que ese recorte de conocimiento en el que nos toca participar, forma parte de un todo conformado por la propuesta curricular de la facultad. Dicha propuesta podrá tener o adoptar distintos nombres (plan de estudios, currícula, diseño curricular) según las tendencias pedagógicas de la época o la definición pedagógica de la institución, pero lo importante es que siempre habrá un todo en el cual la asignatura se inserta que es necesario mirar con atención.
En el caso de la FCE, tenemos un Diseño Curricular que contempla - más allá de las asignaturas específicas que componen el "plan de estudios"- una serie de definiciones y consideraciones que encuadran y dan sentido a dicha propuesta. Así, por ejemplo, encontramos que se hace referencia a un documento previo de carácter político, el llamado Acuerdo de Colón y el Acuerdo de Mar del Plata que dieron las líneas generales en las que luego se enmarcó el Diseño Curricular de nuestra facultad.
Por otra parte, al realizarse la reforma se actualizaron los perfiles de las carreras en concordancia con las nuevas demandas y características del contexto social, económico y cultural. Estos perfiles expresan el punto de llegada que la institución pretende alcanzar, comprometiéndose a formar graduados con tales competencias. Expresan los objetivos que deben haberse alcanzado al término de los estudios de cada carrera. Para ello, todas las experiencias que integran la propuesta curricular deben estar en consonancia y armonizar entre sí a fin de lograrlo. Sin lugar a dudas, cada asignatura entonces debe atender esta propuesta y tener como norte el logro de estos perfiles, los que podrán ir alcanzándose a través del tránsito del estudiante por las diferentes asignaturas. Estas le irán proporcionando oportunidades de estudiar, conocer, experimentar distintas situaciones educativas que lo irán formando en tal sentido, siempre y cuando los responsables de las asignaturas estén conscientes de cuál es el rumbo que deben seguir y de que no se trata solamente de hacer un determinado itinerario disciplinar sino de ofrecer oportunidades de formación consistentes con el todo.
Por otra parte, la existencia de un diseño curricular implica que el docente no es absolutamente libre para planear su asignatura, en tanto debe responder al lugar que ella tiene dentro del plan de estudios, así como al ya mencionado perfil.
Sin embargo, esto no significa que el profesor deba asumir un rol pasivo o de sumisión al currículo. Por el contrario, desde nuestra perspectiva, los docentes tienen un rol activo fundamental como copartícipes en el desarrollo curricular. Son usuarios del diseño aprobado por el Consejo Directivo de la facultad y al mismo tiempo creadores de la propuesta curricular de la asignatura y de su desarrollo en la práctica.
Acerca de la utilidad del programa Antes de centrarnos en el cómo de la elaboración de los programas de las asignaturas, es bueno que dediquemos un tiempo a reflexionar sobre su función y utilidad. Existe una lamentable tradición que lleva a suponer que formular y presentar el programa no es más que cumplir con un requisito formal, burocrático y por lo tanto de algún modo molesto. En consecuencia, muchas veces no se dedica a la elaboración de programas el tiempo ni el interés que sería conveniente.
Contrariamente, el programa de la asignatura tiene una función eminentemente pedagógica. Por un lado, es el espacio en el que se plasma la propuesta académico-pedagógica de la cátedra: aquello que el profesor pretende que sus alumnos logren aprender y los recursos metodológicos y bibliográficos previstos para que ello sea posible. Es también la brújula que dirige la tarea cotidiana del docente, en tanto es el punto de partida que da dirección a la propuesta de trabajo de cada clase. Asimismo, es la vía de comunicación formal de esa propuesta al alumno, para quien un programa bien confeccionado representa un inigualable organizador del trabajo a realizar durante el desarrollo de esa asignatura. Constituye el marco de referencia al cual podrá volver en busca de guía para orientar y reorientar su aprendizaje. Desde esta perspectiva, es entonces de fundamental importancia la elaboración de programas, más allá de que su formulación y presentación sea también un requerimiento administrativo.
Así, las exigencias para la elaboración de programas tal como se describen en la Resolución N° 4422/97 y su antecesora Resolución Nº1052/95 de Consejo Directivo de esta facultad (ver Anexo), adquieren sentido y relevancia, mucho más allá de pautar cierta homogeneización formal de los programas de la Casa que es lo que a primera impresión podría parecer.
Enfatizar la importancia de la elaboración de programas, no significa suponer ingenuamente que una vez resuelto esto tenemos solucionado el problema de la enseñanza. Antes bien, el programa es la hipótesis de trabajo que será necesario confirmar o rectificar en función de las condiciones reales de desarrollo del curso:
  • características del grupo de alumnos
  • condiciones de trabajo
  • cambios en el cronograma por motivos diversos
  • respuesta de los alumnos a las propuestas que el profesor les va haciendo, entre muchas otras que se podrían enumerar
Pero sin este organizador del trabajo de docentes y alumnos no tendríamos rumbo para nuestra tarea de aula. Por eso, es una saludable práctica volver cuantas veces sea necesario a la propuesta hecha en el programa, para ratificar o rectificar el rumbo, para introducir modificaciones, etc. Esto conduce también a reflexionar sobre la caducidad de los programas y por tanto a la necesidad de su actualización, más allá de que se produzca o no una reforma curricular. En tal sentido, Pierre Bourdieu y Francois Gros sugieren un interesante principio a tener en cuenta que tiene que ver con la lógicaincorporación-supresión. En tanto debamos incorporar nuevos contenidos para actualizar los programas según los avances de las ciencias, deberemos suprimir otros que han quedado caducos o han perdido relevancia social.
Decíamos anteriormente que la elaboración del programa tiene que hacerse en el marco de la propuesta curricular de la facultad. Esto supone tener conciencia de dicha propuesta como un todo al que cada parte contribuye y está en relación; podríamos decir que es un sistema de partes en interdependencia dinámica. Por ello, es de suma importancia que la elaboración del programa se haga en concordancia con el plan de estudios y la propuesta de contenidos mínimos de las distintas asignaturas. Aquí se hace clave también el trabajo a nivel departamental a fin de posibilitar la articulación vertical - con asignaturas previas y posteriores- y también horizontal, con diferentes asignaturas de un mismo departamento. Esto colabora en la organización de una propuesta armónica y evita las frecuentes superposiciones o lagunasModelos de organización de programas Al iniciar el proceso de elaboración del programa, en primer lugar es necesario definir las cuestiones estructurales. Esto es, la forma que el programa adoptará a fin de satisfacer las exigencias del perfil de la carrera definido en la propuesta curricular y las peculiaridades de la asignatura en cuestión. Asimismo será necesario considerar cuál es la ubicación de la asignatura dentro del plan de estudios, ya que ello marcará en algunos casos, el límite de lo posible en función de cuales sean las experiencias previas de los alumnos.
En cuanto a las definiciones de tipo estructural, si bien tradicionalmente los programas universitarios suelen estar organizados en función de la disciplina y lo que ella epistemológicamente exige, no es esta la única manera de estructurar un programa para el nivel superior.
Clifton Conrad puede ayudarnos a pensar diferentes alternativas de organización de la asignatura. Este autor describe los diferentes modelos posibles y existentes de organización curricular en la educación superior. Y aquí cabe una aclaración, si bien su propuesta está dirigida a la organización del curriculum, también es útil para repensar las maneras de estructurar los programas de asignaturas.
El autor sugiere elegir inicialmente un principio organizador que dé estructura al programa y reseña los principios de uso más frecuente:
... El programa centrado en la disciplina académica ... El programa centrado en grandes libros e ideas ... El programa centrado en problemas sociales ... El programa centrado en competencias

El programa centrado en la disciplina académica

Este principio supone que los programas se formulan según la concepción que se tenga del campo disciplinar. La disciplina tiene una estructura y una sintaxis propias; un lenguaje y ciertas reglas de interpretación semiótica, que determinan a la vez el objeto de estudio y la forma de investigarlo. Se entiende aquí por disciplina a "una comunidad de personas, la expresión de la imaginación humana; un dominio; una tradición; una estructura sintáctica; un modo de indagación; una estructura conceptual; un lenguaje especializado u otro sistema de símbolos; una herencia literaria y de artefactos, así como una red de comunicaciones; una postura valorativa y afectiva; y una comunidad de instrucción." Una de las más frecuentes críticas a este modelo es que si bien la estructura del conocimiento está basada en disciplinas, la estructura del curriculum o de los programas debiera fundarse en objetivos educativos y en el diseño de experiencias de aprendizaje. Otra dificultad tiene que ver con el desinterés que generan en el estudiante ciertas disciplinas que visualizan como muy distantes de la práctica profesional o escasamente relacionadas con ella.

El programa centrado en grandes libros e ideas

Dado que el desarrollo del conocimiento occidental se ha ido plasmando en grandes teorías expuestas en libros de autores clásicos que no se han preocupado por los límites disciplinares de los asuntos que desarrollaban, los defensores de este principio ven aquí una posibilidad de organizar el programa de manera más atractiva e interesante para los alumnos. Es también un modo de proporcionar una buena formación básica. Es bueno aclarar que no nos referimos aquí al desarrollo de una asignatura con bibliografía única, sino en la cuidadosa selección de un clásico para dar forma al programa, más allá de la bibliografía que luego pueda utilizarse. Pero sí supone la lectura completa del libro tomado como eje, lo cual puede considerarse un aporte interesante en la era de la fragmentación de conocimientos por el auge de las fotocopias de capítulos aislados o de breves fragmentos de los que a veces se desconoce la fuente original.
Entre los cuestionamientos a este principio podemos citar el dar un lugar de autoridad tal al autor cuyo libro se toma que haga difícil su cuestionamiento o la reflexión crítica a partir de él. Además, puede dar una idea algo estática del conocimiento, aunque esto depende mucho de cómo el profesor trabaje metodológicamente y de su propia concepción sobre el tema, que es la que sin duda más impactará a los alumnos.

El programa centrado en problemas sociales

También podríamos llamarlo "centrado en núcleos problemáticos". Se eligen algunos problemas sociales o problemas de la práctica profesional en torno a los cuales se organizan el programa y por tanto, todas las experiencias de aprendizaje.
En general, este tipo de organización apunta a destacar cuestiones relacionadas con la responsabilidad social y la orientación hacia la resolución de problemas, y a mostrar cómo el conocimiento aporta en dichas soluciones. Si el principio anterior tendía más hacia el pasado, en este caso se orienta generalmente hacia el presente y el futuro. Lleva también a una mirada más amplia que la del campo disciplinar, ya que difícilmente los problemas tengan resolución con el aporte exclusivo de un campo del conocimiento.
Algunos cuestionan a este modelo el ignorar en alguna medida los fundamentos disciplinares.

El programa centrado en competencias

Lejos de ser una alternativa novedosa, en EEUU hay antecedentes de este tipo de modelo que datan de 1920.
Un programa basado en competencias supone que los logros que los alumnos deben alcanzar pueden formularse en términos de competencias. Esto es, el saber hacer requerido en el campo profesional de que se trate. Así un programa que sigue este modelo pone su preocupación en el output, en lo que el estudiante será capaz de hacer y con qué nivel de desempeño.
En propuestas de este tipo, "el acceso a la información se da integrado en proyectos de acción y el aprendizaje resulta de la interacción entre elindividuo y el medio que le rodea." Suele cuestionarse a este modelo la dificultad para evaluar los logros en términos de competencias, como así también que la competencia puede visualizarse como ahistórica o como dada y por tanto encubrir sus fundamentos sociopolíticos.
Cada uno de estos modelos tiene ventajas y desventajas. La potencialidad y conveniencia de cada uno debe ser evaluada en función de lo que el profesor se propone trabajar con sus alumnos y, como ya se señaló, de los aspectos del perfil que se quieran enfatizar y la relación en general de la asignatura con las demás que conforman la oferta de cursos de la carrera.
Siguiendo con la propuesta de Conrad, el autor sugiere cuatro continuos que muestran los énfasis posibles que los modelos curriculares o de organización de programas pueden tener. Elegir el énfasis que se le dará a la propuesta debería ser el segundo paso, una vez elegida la estructura del programa.
Monografias.com
Dichos continuos son:
En relación con el lugar donde se aprende, la universidad tradicionalmente ha privilegiado uno de los extremos del continuo: el aprendizaje en clase. Sin embargo, ha habido y crecen las experiencias que incorporan el aprendizaje en terreno. Las pasantías, por ejemplo, se inscriben en esta línea, como así también el aprendizaje-servicio (service learning) o servicio social universitario.
El segundo continuo, es decir, los contenidos plantean la discusión entre la amplitud temática o la profundización. Cuando se trata de un diseño curricular esto lleva generalmente a la definición de la ubicación de la asignatura en un ciclo básico o profesional, por ejemplo. O a determinar el sesgo del plan dando más énfasis a las Ciencias Básicas o a las Aplicadas. Pero si se trata de un programa, podemos ver esta tensión al definir el desglose de contenidos o al decidir el "hasta dónde" de la asignatura. Estos dos extremos del continuo que pueden parecer excluyentes, en realidad pueden jugar también complementariamente en algunos casos.
El tercer y cuarto continuos, es decir, el diseño y la flexibilidad del programa, están claramente pensados en función de quien diseña el plan de estudios y de su grado de flexibilidad. Son conocidas las experiencias de curriculum abierto o flexible, en las que el estudiante va diseñando su itinerario bajo la guía de un tutor académico. En nuestro país, son más las experiencias de propuestas cerradas, diseñadas por la facultad, en ocasiones con cierto grado de opcionalidades, la mayoría de los casos, en los últimos tramos de las carreras. Ahora bien, ¿qué sucede si pensamos estos continuos o énfasis al nivel de los programas de asignaturas? Podemos pensar fundamentalmente en términos de flexibilidad o electividad y de rigidez u obligatoriedad. Es interesante plantearse qué espacio otorga la propuesta académico-pedagógica de la asignatura a la posibilidad de elección del estudiante. En tanto el alumno tenga oportunidad de elegir entre distintas alternativas, podrá personalizar en alguna medida su aprendizaje en función de sus intereses y hasta de sus potencialidades, brindándole además la oportunidad de tomar decisiones y comprometerse con ellas. El programa puede estar pensado de modo tal que ofrezca espacios para la elección entre, por ejemplo, contenidos con los cuales trabajar, experiencias a realizar, actividades diferentes, alternativas de evaluación distintas... y todo lo que el docente esté dispuesto a flexibilizar en función de acompañar mejor los intereses, necesidades y potencialidades de los estudiantes.
Si bien los diferentes modelos de organización de programas llevan con cierta naturalidad a acentuar unos énfasis más que otros, siempre la última palabra la tiene el profesor o la cátedra al tomar estas decisiones y ajustar los distintos aspectos del programa para armonizar la propuesta.

Tema 2: Pautas para la elaboración del programa

Los diferentes elementos que constituyen el programa deben integrarse de manera tal que posibiliten que este sea una propuesta clara, consistente y que cumpla además con la función de guía a la que ya nos referimos anteriormente. El programa es también el medio para comunicar el aporte de la asignatura a las demás instancias académicas: secretario académico, directores de departamento y de carrera, docentes de otras asignaturas, etc.
Con tales propósitos, nuestra facultad ha fijado pautas para la elaboración de programas, ordenadas por la Resolución N° 4422/97 de Consejo Directivo (adjunta en anexo). En ella se definen los aspectos que los programas deben contemplar:
Encuadre General Este nivel debe presentar el más amplio encuadre en que se incluye la asignatura y debe constar de los siguientes elementos:
  • Contenidos mínimos: es el espacio para desglosar los contenidos mínimos, tal como figuran en el Documento de la Reforma Curricular o en el plan de estudios correspondiente (en el caso de las materias obligatorias), y que deberían reflejar los ejes temáticos de cada asignatura, comunes a todas las cátedras.
  • Fundamentación: en esta instancia se pretende justificar la inclusión de la asignatura en el currículum y encuadrarla dentro de un área de conocimiento, dejando clara su importancia para la formación académica y profesional. Se busca responder a las siguientes cuestiones:
¿Por qué es necesaria su inclusión en el curriculum?
¿Qué aporta al perfil profesional y ocupacional?
¿Qué problemas plantea e intenta resolver?
¿Qué aspectos de la realidad aborda?
  • Ubicación de la asignatura en el curriculum: aquí se pretende dejar expuestos claramente los requisitos formales y de aprendizaje que se consideren necesarios, según la relación de la asignatura con otras en el plan curricular. En síntesis, se debe responder a la pregunta:
¿Cuáles son los prerrequisitos necesarios para su cursado? ¿Cómo se integra en el ciclo correspondiente del plan?
  • Objetivos: aquí se plantean los logros esperados de los alumnos de modo tal que orienten el proceso de enseñanza y aprendizaje. Es decir que se debe responder a la pregunta:
¿Qué pretendemos que aprendan los alumnos al término del cursado de la materia? Esto puede adoptar la forma de un buen párrafo, claramente escrito y en lenguaje adecuado especialmente para el alumno, caracterizando el curso y los propósitos que el docente propone en términos de logros de los alumnos. Otros, prefieren hacer redacciones más puntuales, indicando en cada una de ellas una meta que el alumno debe alcanzar. En ambos casos, se debe cuidar de no caer en una visión fragmentaria ni del objeto de conocimiento ni del estudiante.
Es posible también diferenciar aquellos logros intermedios que se espera que los alumnos vayan logrando. En ese caso, corresponde distinguir entre objetivos generales y específicos. También se pueden desglosar objetivos según las diferentes unidades didácticas, lo que tiene una interesante función orientadora ya que especifica los aprendizajes esperados en cada etapa, para lo cual el estudiante deberá integrar y aplicar los conocimientos y habilidades adquiridas a la resolución de situaciones teóricas o prácticas.
Programa Analítico El programa analítico representa el desarrollo de los contenidos mínimos de la asignatura. Confeccionar el programa analítico significa también optar por un determinado modelo de organización, tal como vimos anteriormente.
Es en esta parte donde se plasmará el modelo de organización elegido (por disciplina, por competencias, etc.) y donde se pondrán en juego los diferentes criterios de selección de contenidos. En tal sentido, las siguientes preguntas pueden ser de ayuda:
¿Qué contenidos son necesarios para lograr los objetivos propuestos? ¿Cuál es la mejor manera de ordenar los contenidos? (qué debe ir primero y qué después) ¿Cuál es la importancia específica de cada contenido? ¿Qué grado de actualización o vigencia tienen los contenidos que selecciono? ¿En qué medida los contenidos contribuyen al perfil profesional? ¿Son posibles de desarrollar en el tiempo disponible? Otros aspectos a considerar son la extensión y complejidad de los contenidos, como así también el grado de profundidad con que se los tratará. Aquí empieza a verse la necesidad de definir los énfasis antes mencionados (los continuos de los que habla Conrad) para poder responder a estas preguntas organizadoras del trabajo.
Poder dar respuesta a estas preguntas, posibilitará la redefinición de nuestros programas y la superación de superposiciones, redundancias y ausencias.
Pero es necesario dar una organización a estos contenidos, la que en gran medida estará influida por el tipo de modelo elegido. La manera más habitual de agrupar contenidos es en unidades didácticas. La resolución de referencia solicita que el programa analítico tenga, para cada unidad, un objetivoespecífico. Otras formas posibles de organizarlos es en torno a ejes o problemas. De lo que se trata es de dar organización y sentido a los contenidos que se enseñarán, mostrando las relaciones de los distintos fenómenos entre sí.
Las unidades didácticas permiten agrupar grandes bloques de contenidos en torno a un concepto base o eje que le da estructura. Habrá que asegurarse de que estos estén agrupados en bloques coherentes de contenido, relacionados directamente con los objetivos de la unidad y que respondan a las exigencias epistemológicas y didácticas del contenido en cuestión. Generalmente, a cada unidad se le asigna un nombre que sintetiza o refleja el tema central a tratar.
El número de unidades debe estar en relación con la carga horaria de la asignatura, lo que tendrá que ajustarse luego cada cuatrimestre en función de cómo se prevea la realidad del calendario académico. Deben elaborarse tantas unidades como sea necesario, pero evitando caer en fragmentaciones del conocimiento que pudieran hacer perder integración y coherencia a la propuesta. Un recurso utilizado por algunos docentes para seleccionar y organizar los contenidos es el de diseñar primeramente el esquema conceptual de la asignatura. Esto ayuda a identificar los conceptos clave y básicos a enseñar y a establecer relaciones de causalidad, dependencia, pertenencia, inclusión, etc. entre ellos De este modo, diseñar el esquema conceptual facilita también la definición de las unidades didácticas.
Elaborar el esquema conceptual de la asignatura, esto es, identificar los conceptos básicos y definir la red de interrelaciones correspondientes, no es tarea sencilla. Pero puede ser de suma utilidad. Es necesaria la identificación de los conceptos centrales, de mayor nivel de generalidad y por tanto de inclusividad, a partir de los cuales ir "enhebrando" toda la red de relaciones.
Bibliografía
La bibliografía debe ser seleccionada de manera tal que permita desarrollar el programa de contenidos elaborado. Un buen criterio es organizarla por unidad didáctica, a fin de orientar el trabajo de los estudiantes. En todo caso, es conveniente desglosar la bibliografía obligatoria y ampliatoria y debe respetar en su presentación las pautas solicitadas en el Anexo de la resolución, art. 5°.
Algunos criterios a tener en cuenta para la selección de la bibliografía son:
  • Pertinencia: la bibliografía debe responder claramente a los contenidos y objetivos de la asignatura. A veces hay docentes que tienen la tentación de incorporar artículos novedosos y muy interesantes pero que exceden las pretensiones del programa de la asignatura.
  • Actualidad: la vertiginosidad de la creación de nuevos conocimientos, más en unas áreas que en otras, exige que la bibliografía esté en concordancia con ello.
  • Vigencia: lo expresado en el punto anterior no implica que haya que descartar bibliografía de algunos años, u otras veces, de muchos años atrás, en tanto se trate de clásicos o de obras que aunque antiguas tienen plena vigencia.
  • Cantidad: el volumen bibliográfico no siempre es señal de erudición y mucho menos de logros posibles en términos de aprendizaje. El docente debe hacer una selección realista de bibliografía posible de ser abordada en el tiempo real de trabajo de un cuatrimestre.
  • Complejidad: relacionado con lo expresado en el primer punto, se debe considerar si la complejidad de la bibliografía es realmente comprensible para los estudiantes.
  • Evitar superposiciones: requiere la comunicación con otras cátedras y/o la articulación a nivel departamental e interdepartamental.
Métodos de conducción del aprendizaje El paso siguiente es la selección de las estrategias de enseñanza y aprendizaje con la finalidad de lograr los objetivos previamente establecidos. Es necesario que la metodología de enseñanza haga referencia tanto a los cursos cuatrimestrales presenciales como a los cursos a distancia, según pauta la resolución. En este apartado de metodología de conducción del aprendizaje se describirán las estrategias metodológicas que la cátedra adoptará para organizar las situaciones de enseñanza y aprendizaje, como por ejemplo, exposiciones, estudio independiente, técnicas grupales, etcétera.
Cuando hablamos de metodologías de conducción o metodologías de enseñanza-aprendizaje nos referimos al conjunto de acciones(estrategias y técnicas) que propone el docente para facilitar al alumno sus experiencias de aprendizaje (actividades que ellos realizan o vivencias que experimentan). Además, como afirma Díaz Barriga, la metodología es el punto de unión de lo epistemológico, relativo a un campo disciplinar particular, y lo didáctico. Esto significa que articula la problemática del conocimiento con la del aprendizaje. Podríamos decir también que la metodología expone nuestra concepción de la enseñanza y el aprendizaje. Así, por ejemplo, si entendemos que el aprendizaje se construye, buscaremos estrategias que atiendan a este proceso. Por el contrario, si creemos que simplemente se "adquiere", la elección de las estrategias será completamente distinta. De la misma manera, si estamos convencidos de la importancia del papel activo del alumno en la construcción de sus aprendizajes, buscaremos estrategias que apunten a dicho logro. Distinta será la selección de quien crea que al adulto le es suficiente con sólo "escuchar" para aprender.
Asimismo, al seleccionar una estrategia de trabajo elegimos también un modelo comunicacional. Si trabajamos en una clase magistral proponemos un modelo de comunicación centrado en el profesor. Otras alternativas, como el trabajo en grupo, por ejemplo, rescata la importancia del intercambio de opiniones y la confrontación de puntos de vista diversos en la construcción del aprendizaje, privilegiando la comunicación entre los estudiantes, y de estos con el profesor.
Otros aspectos a considerar son el tamaño y composición del grupo, el lugar físico y los recursos disponibles.
Todas las estrategias tienen fortalezas y debilidades. Es importante analizar cuidadosamente lo que se quiere lograr y las características del contenido a trabajar para elegir la estrategia más adecuada en cada caso.
Metodología de evaluación de los alumnos En cuanto a la metodología de evaluación, se espera que la cátedra explicite aquí su concepción de evaluación y que detalle:
  • para alumnos regulares de cursos presenciales: las instancias de evaluación, promoción y los instrumentos que se utilizarán (parciales, trabajos, monografías, etc.)
  • para alumnos regulares de cursos con la modalidad a distancia: las instancias de evaluación, promoción y los instrumentos que se utilizarán (parciales, trabajos, monografías, etc.)
- para alumnos libres: los requisitos e instrumentos que utilizarán.
La propuesta de evaluación de los alumnos está absolutamente integrada al proceso de enseñanza y aprendizaje.
Habitualmente se definen tres tipos de evaluación: la que el docente propone cuando se encuentra con un nuevo grupo al que necesita conocer (evaluación diagnóstica), la que se realiza durante el desarrollo de la asignatura (evaluación continua) y la que se practica al final del ciclo de la cursada (evaluación final). Para llevarlas a cabo se pueden aplicar distinto tipo de instrumentos, buscando siempre los que conduzcan a la mejor recolección y valoración de la información sobre los aprendizajes realizados por el alumno, de modo de tomar las decisiones pertinentes en función del rendimiento alcanzado.
Algunos aspectos importantes a tener en cuenta son:
  • Que evaluación y enseñanza deben ser coherentes porque son dos momentos de un mismo proceso.
  • Que es de suma importancia fijar criterios claros de evaluación y darlos a conocer a los alumnos.
  • Que la evaluación no debe ser una "trampa" a sortear sino la instancia del reconocimiento de lo logrado, tanto para ratificar el rumbo que lleva el estudiante como para orientarlo en cuanto a los propósitos que no ha logrado alcanzar.
  • Que no se debe evaluar lo que no se ha enseñado.
  • Que es muy importante comunicar a los alumnos los logros alcanzados y los aspectos que deben profundizar o mejorar.
Tener en claro qué es lo que se quiere evaluar es de capital importancia para definir el resto del proceso. Esto va mucho más allá de saber que se quiere evaluar el contenido x o la unidad y. De lo que se trata es de definir qué esperamos que hayan logrado los estudiantes para, a partir de esto, estar en condiciones de valorar las producciones de los alumnos. Ello determinará qué instrumento conviene utilizar y qué criterios de calificación deberán aplicarse.
Palabras Finales Esperamos que el material les resulte de utilidad para la tarea de programación de la asignatura. Les recordamos que nuestra Secretaría está siempre dispuesta a ofrecer asesoramiento y apoyo a la tarea docente. Para ello hay un área específica de Asesoramiento Pedagógico que:
  • Ofrece orientación y acompañamiento pedagógico a profesores y cátedras de la Facultad.
  • Trabaja juntamente con los docentes que lo solicitan en la búsqueda de alternativas pedagógicas que ayuden a un mejor desarrollo de los cursos.
Para ello, realiza las siguientes acciones:
  • Publicación mensual de aportes pedagógicos en el Boletín Electrónico de la Secretaría;
  • Orientación para la confección de programas de las asignaturas según requisitos del Consejo Directivo;
  • Búsqueda de estrategias metodológicas adecuadas;
  • Asesoramiento para la realización de trabajos grupales;
  • Orientación para la selección de criterios y formas de evaluación;
  • Consultas puntuales vía e-mail (pmurri@econ.uba.ar)

prioridad de operadores, evaluacion de expreciones

4.5 Prioridad de operadores, evaluación de expresiones.

Determina el orden en que habrán de realizarse las operaciones en una expresión determinada. Para obtener la prioridad se deben conocer las siguientes reglas:

Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados (interiores unos a otros), las expresiones más internas se evalúan primero.
En caso de coincidir varios operadores de igual prioridad en una expresión o subexpresión encerrada entre paréntesis, el orden de prioridad en este caso es de izquierda a derecha.

Cuando se desea realizar una operación con baja prioridad por adelantado, debe agruparse a los operandos involucrados.

Los paréntesis tienen prioridad sobre el resto de las operaciones.
Determina el orden en que habrán de realizarse las operaciones en una expresión determinada.

Para obtener la prioridad se deben conocer las siguientes reglas:

Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados (interiores unos a otros), las expresiones más internas se evalúan primero.

En caso de coincidir varios operadores de igual prioridad en una expresión o subexpresión encerrada entre paréntesis, el orden de prioridad en este caso es de izquierda a derecha.

Cuando se desea realizar una operación con baja prioridad por adelantado, debe agruparse a los operandos involucrados.

Los paréntesis tienen prioridad sobre el resto de las operaciones.
.
.
.
.
+

operadores, operandos y expreciones

4.4.- Operadores, Operandos y Expresiones

*Operando:
Referente a la parte de la instrucción de lenguaje máquina de la computadora que designa la dirección de los datos con los que se debe operar.

*Expresion:
Una expresión es una secuencia de operadores y operandos que describe un cálculo. Normalmente una expresión se evalúa en tiempo de ejecución.


*OPERADORES:


operadores: un operador es el símbolo que determina el tipo de operación o relación que habrá que establecerse entre los operandos de una expresión para alcanzar un resultado.
Los operadores se clasifican en tres grupos:
  1. Aritméticos
  2. Relacionales
  3. Lógicos
1.-Operadores aritméticos: son aquellos que permiten la realización de cálculos aritméticos. Utilizan operandos numéricos y proporcionan resultados numéricos.

operadores aritmeticos
+ ------- suma
-------resta
* -------Multiplicación
/ -------División real
Div -----División entera
Mod ----Residuo
^ -------Exponenciación

Ejemplos:

7+3 = 10
7-3 = 4
20 Mod 3 = 2
10/4 = 2.5
2^3 = 8

en la expresión 7+3, los valores 7 y 3 se denominan operandos, que son los valores que se evaluan o relacionan. El valor de la expresión 7 + 3 se conoce como resultado de la expresión , que es el producto de la relacion entre los operandos condicionados por el operador.


*Operadores Relacionales: 

Los operadores relacionales, también denominados operadores binarios lógicos y de comparación, se utilizan para comprobar la veracidad o falsedad de determinadas propuestas de relación (en realidad se trata respuestas a preguntas). Las expresiones que los contienen se denominan expresiones relacionales. Aceptan diversos tipos de argumentos, y el resultado, que es la respuesta a la pregunta, es siempre del tipo cierto/falso, es decir, producen un resultado booleano.
Tabla: Operadores relacionales.
Operador
Acción
>
Mayor que
>=
Mayor o igual que
<
Menor que
<=
Menor o igual que
=
Igual
<>
Distinto
Si la propuesta es cierta, el resultado es true (un valor distinto de cero), si es falsa false (cero).
Ejemplos:
Si a = 10, b = 20, c = 30
a + b > c

Falso
a - b <>

Verdadero
a - b = c

Falso
a * b < > c

Verdadero

*Operadores lógicos
son aquellos que permiten la combinacion de condiciones para formar una sola expresion lógica. Utilizan operandos lógicos y proporcionan resultados lógicos también.

Operadores
not -------------negación (no)
and -------------conjunción (y)
or --------------disyunción (o)
xor -------------disyunción exclusiva (o/solo)

Se obtiene verdadero si:
NOT-----el operando el falso
AND-----ambos operandos son verdaderos
OR------Al menos un operando es verdadero
XOR----solo uno de los operandos es verdadero.

ejemplos: (5+3 and 4-2) > 1 , (5 or 6) < 50
Resultado de imagen para operadores, operandos y expresionesResultado de imagen para operadores, operandos y expresiones

proposicion de asignacion

Resultado de imagen para proposicion de asignacion
{ sentencia 1 ; sentencia 2 ; ............. sentencia n ; }


Este conjunto se comportará sintacticamente como una sentencia simple y la llave de cierre del bloque NO debe ir seguida de punto y coma .
Un ejemplo de bloque ya visto , es el cuerpo del programa principal de la función main() .main() { bloque de sentencias }


En las proposiciones de control de flujo de programa , trabajaremos alternativamente con sentencias simples y bloques de ellas .

2. PROPOSICION IF - ELSE

Esta proposición sirve para ejecutar ciertas sentencias de programa , si una expresión resulta CIERTA ú otro grupo de sentencias, si aquella resulta FALSA. Su interpretación literal sería : SI es CIERTA tal cosa , haga tal otra , si no lo es salteéla .

El caso más sencillo sería :if(expresión) sentencia ; ó if(expresión) sentencia ;


Cuando la sentencia que sigue al IF es única, las dos formas de escritura expresadas arriba son equivalentes . La sentencia sólo se ejecutará si el resultado de "expresión" es distinto de cero (CIERTO) , en caso contrario el programa salteará dicha sentencia , realizando la siguiente en su flujo.


Veamos unos ejemplos de las distintas formas que puede adoptar la "expresión" dentro de un IF :


if( a > b ) if( (a > b) != 0 ) las dos expresiones son idénticas, aunque a veces resulta más claro expresarla de la segunda manera, sobre todo en los primeros contactos con el lenguaje.
if(a) if(a != 0)
if(!a) if(a == 0 ) Las dos superiores son idénticas entre sí , al igual que las dos inferiores Obsérvese que (!a) dará un valor CIERTO sólo cuando a sea FALSO. (ver operador NEGACION en el capítulo anterior )
if( a == b )
if( a = b ) /* Error */ La primera es una expresión correcta , el IF se realizará sólo si a es igual a b. En cambio la segunda es un error , ya que no se está comparando a con b , sino ASIGNANDO el valor de esta a aquella . Sin embargo, a veces puede usarse como un truco (un poco sucio) de programacion , ya que primero se realiza la asignación y luego se evalúa el resultado de esta para realizar el IF , es entonces equivalente a escribir :
a = b ;
if(a) .................... con el ahorro de una linea de programa ( a costa de la legibilidad del mismo ).




En casos más complejos que los anteriores , la proposición IF puede estar seguida por un bloque de sentencias :if(expresión) if(expresión) { { sentencia 1 ; sentencia 1 ; sentencia 2 ; sentencia 2 ; ............... ............. } }


Las dos maneras son equivalentes , por lo que la posición de la llave de apertura del bloque queda librada al gusto del programador . El indentado de las sentencias (sangría) es también optativo , pero sumamente recomendable ,sobre todo para permitir la lectura de proposiciones muy complejas ó anidadas , como se verá luego. El bloque se ejecutará en su conjunto si la expresion resulta CIERTA. El uso del ELSE es optativo , y su aplicación resulta en la ejecución de una , ó una serie de sentencias en el caso de que la expresión del IF resulta FALSA.



Su aplicación puede verse en el ejemplo siguiente : if(expresión) if(expresión) { { sentencia 1 ; sentencia 1 ; sentencia 2 ; sentencia 2 ; } } sentencia 3 ; else sentencia 4 ; { sentencia 5 ; sentencia 3 ; sentencia 4 ; } sentencia 5 ;


En el ejemplo de la izquierda no se usa el ELSE y por lo tanto las sentencias 3 , 4 y 5 se ejecutan siempre . En el segundo caso , las sentencias 1 y 2 se ejecutan solo si la expresión es CIERTA , en ese caso las 3 y 4 NO se ejecutarán para saltarse directamente a la 5 , en el caso de que la expresión resulte FALSA se realizarán las 3 y 4 en lugar de las dos primeras y finalmente la 5 .
La proposición ELSE queda siempre asociada al IF más cercano , arriba de él .
Es común también , en caso de decisiones múltiples , el uso de anidamientos ELSE-IF de la forma indicada abajo:if(exp.1) if(exp.1) sentencia1 ; sentencia1 ; else if(exp.2) else if(exp.2) sentencia2 ; sentencia2 ; else if(exp.3) else if(exp.3) sentencia3 ; sentencia3 ; else else sentencia5 ; sentencia5 ;


Si bién se suele escribir según la modalidad de la izquierda , a la derecha hemos expresado las asociaciones entre los distintos ELSE é IF por medio del indentado del texto.



3. PROPOSICION SWITCH
El SWITCH es una forma sencilla de evitar largos , tediosos y confusos anidamientos de ELSE-IF .
Supongamos que estamos implementando un Menu , con varias elecciones posibles . El esqueleto de una posible solución al problema usando if-else podría ser el siguiente :
#include <<stdio.h>> main() { int c ; printf("\nMENU :") ; printf("\n A = ADICIONAR A LA LISTA ") ; printf("\n B = BORRAR DE LA LISTA ") ; printf("\n O = ORDENAR LA LISTA ") ; printf("\n I = IMPRIMIR LA LISTA ") ; printf("\n\nESCRIBA SU SELECCION , Y LUEGO <<ENTER>> : ") ; if( (c = getchar()) != '\n' ) { if( c == 'A') printf("\nUD. SELECCIONO AGREGAR") ; else if( c == 'B') printf("\nUD. SELECCIONO BORRAR") ; else if( c == 'O' ) printf("\nUD. SELECCIONO ORDENAR") ; else if( c == 'I' ) printf("\nUD. SELECCIONO IMPRIMIR") ; else printf("\n\a\aUD. APRETO UN CARACTER ILEGAL" ) ; } else printf("\n¡ UD. NO HA SELECCIONADO NADA !" ) ; }


Como es fácil de ver , cuando las opciones son muchas, el texto comienza a hacerse difícil de entender y engorroso de escribir.
El mismo programa, utilizando un SWITCH , quedaría mucho más claro de leer, y sencillo de escribir, como se aprecia en el EJEMPLO siguiente.
#include <stdio.h> #include <conio.h> main()
{ int c ; printf("\nMENU :") ; printf("\n A = ADICIONAR A LA LISTA ") ; printf("\n B = BORRAR DE LA LISTA ") ; printf("\n O = ORDENAR LA LISTA ") ; printf("\n I = IMPRIMIR LA LISTA ") ; printf("\n\nESCRIBA SU SELECCION , Y LUEGO <<ENTER>> : ") ; c = getchar() ; switch (c) { case 'A' : printf("\nUD. SELECCIONO AGREGAR") ; break ; case 'B' : printf("\nUD. SELECCIONO BORRAR") ; break ; case 'O' : printf("\nUD. SELECCIONO ORDENAR") ; break ; case 'I' : printf("\nUD. SELECCIONO IMPRIMIR") ; break ; case '\n': printf("\n¡ UD. NO HA SELECCIONADO NADA !" ) ; break ; default : printf("\n\a\aUD. APRETO UN CARACTER ILEGAL" ) ; break ; } }


El SWITCH empieza con la sentencia : switch (expresión) . La expresión contenida por los paréntesis debe ser ENTERA , en nuestro caso un caracter ; luego mediante una llave abre el bloque de las sentencias de comparación . Cada una de ellas se representa por la palabra clave "case" seguida por el valor de comparación y terminada por dos puntos . Seguidamente se ubican las sentencias que se quieren ejecutar , en el caso que la comparación resulte CIERTA . En el caso de resultar FALSA , se realizará la siguiente comparación , y así sucesivamente .
Prestemos atención tambien a la sentencia BREAK con la que se termina cada CASE. Una característica poco obvia del SWITCH , es que si se eliminan los BREAK del programa anterior , al resultar CIERTA una sentencia de comparación, se ejecutarán las sentencias de ese CASE particular pero TAMBIEN la de todos los CASE por debajo del que ha resultado verdadero. Quizás se aclare esto diciendo que , las sentencias propias de un CASE se ejecutarán si su comparación ú otra comparación ANTERIOR resulta CIERTA . La razón para este poco "juicioso" comportamiento del SWITCH es que así se permite que varias comparaciones compartan las mismas sentencias de programa , por ejemplo : ................. case 'X' : case 'Y' : case 'Z' : printf(" UD. ESCRIBIO X , Y , ó Z ") ; break ; ..................


La forma de interrumpir la ejecución luego de haber encontrado un CASE cierto es por medio del BREAK , el que dá por terminado el SWITCH .
Al final del bloque de sentencias del SWITCH , aparece una optativa llamada DEFAULT , que implica : si no se ha cumplido ningun CASE , ejecute lo que sigue. Es algo superfluo poner el BREAK en este caso , ya que no hay más sentencias despues del DEFAULT , sin embargo , como el orden en que aparecen las comparaciones no tiene importancia para la ejecución de la instrucción, puede suceder que en futuras correcciones del programa se agregue algún nuevo CASE luego del DEFAULT , por lo que es conveniente preveerlo , agregando el BREAK , para evitar errores de laboriosa ubicación .
Más adelante volveremos sobre otros usos del BREAK.


4. LA ITERACION WHILE
El WHILE es una de las tres iteraciones posibles en C . Su sintaxis podría expresarse de la siguiente forma : while(expresion) ó while(expresión) { proposición 1 ; proposición 1 ; proposición 2 ; ............... proposición n ; }


Esta sintaxis expresada en palabras significaria: mientras (expresión) dé un resultado CIERTO ejecútese la proposición 1 , en el caso de la izquierda ó ejecútese el bloque de sentencias , en el caso de la derecha.
Por lo general , dentro de la proposición ó del bloque de ellas , se modifican términos de la expresión condicional , para controlar la duración de la iteración .

5. LA ITERACION DO - WHILE
Su sintaxis será :do { proposición 1 ; proposición 2 ; ............... } while (expresión) ;


Expresado en palabras , esto significa : ejecute las proposiciones , luego repita la ejecución mientras la expresión dé un resultado CIERTO . La diferencia fundamental entre esta iteración y la anterior es que el DO-WHILE se ejecuta siempre AL MENOS una vez , sea cual sea el resultado de expresión.

6. ITERACION FOR
El FOR es simplemente una manera abreviada de expresar un WHILE , veamos su sintaxis :for ( expresión1 ; expresión2 ; expresion3 ) { proposición1 ; proposición2 ; .............. } Esto es equivalente a : expresión1 ; while ( expresión2 ) { proposición1 ; proposición2 ; .............. expresion3 ; }


La expresión1 es una asignación de una ó más variables , (equivale a una inicialización de las mismas ) , la expresión2 es una relación de algun tipo que , mientras dé un valor CIERTO , permite la iteración de la ejecución y expresión3 es otra asignación , que comunmente varía alguna de las variables contenida en expresión2 .
Todas estas expresiones , contenidas en el paréntesis del FOR deben estar separadas por PUNTO Y COMA y NO por comas simples .
No es imprescindible que existan TODAS las expresiones dentro del paréntesis del FOR , pudiendose dejar en blanco algunas de ellas , por ejemplo :for ( ; exp2 ; exp3) ó for (exp1 ; ; ) ó for ( ; ; )




Estas dos últimas expresiónes son interesantes desde el punto de vista de su falta de término relacional , lo que implica que el programador deberá haber previsto alguna manera alternativa de salir del lazo ( probablemente mediante BREAK ó RETURN como veremos más adelante ) ya que sinó , la ejecución del mismo es infinita ( ó tan larga como se mantenga encendida la computadora ) .


7. LA SENTENCIA BREAK
El BREAK , ya brevemente descripto con el SWITCH , sirve también para terminar loops producidos por WHILE , DO-WHILE y FOR antes que se cumpla la condición normal de terminación . En el EJEMPLO siguiente vemos su uso para terminar un WHILE indeterminado.#include <stdio.h> #include <conio.h> main() { char c ; printf("ESTE ES UN LOOP INDEFINIDO ") ; while(1) { printf( "DENTRO DEL LOOP INDEFINIDO (apriete una tecla):" ) ; if( (c = getch()) == 'Q' ) break ; printf( "\nNO FUE LA TECLA CORRECTA PARA ABANDONAR EL LOOP ") ; } printf("\nTECLA CORRECTA : FIN DEL WHILE ") ; }


Obsérvese que la expresión while(1) SIEMPRE es cierta , por lo que el programa correrá imparable hasta que el operador oprima la tecla "secreta" Q . Esto se consigue en el IF , ya que cuando c es igual al ASCII Q se ejecuta la instrucción BREAK ,dando por finalizado el WHILE .
El mismo criterio podría aplicarse con el DO-WHILE ó con FOR , por ejemplo haciendo for (;;) { /* loop indefinido */ ............ if( expresión ) break ; /* ruptura del loop cuando expresión sea verdadera */ }


8. LA SENTENCIA CONTINUE
La sentencia CONTINUE es similar al BREAK con la diferencia que en vez de terminar violentamente un loop , termina con la realización de una iteración particular y permitiendo al programa continuar con la siguiente.

9. LA FUNCION EXIT()
La función EXIT() tiene una operatoria mucho más drastica que las anteriores , en vez de saltear una iteración ó abandonar un lazo de programa , esta abandona directamente al programa mismo dándolo por terminado . Realiza también una serie de operaciones útiles como ser , el cerrado de cualquier archivo que el programa hubiera abierto , el vaciado de los buffers de salida , etc.
Normalmente se la utiliza para abortar los programas en caso de que se esté por cometer un error fatal é inevitable . Mediante el valor que se le ponga en su argumento se le puede informar a quien haya llamado al programa ( Sistema Operativo , archivo .bat , u otro programa ) el tipo de error que se cometió.

10 SENTENCIA GOTO
Si Ud. se ha admirado de que C tenga la operación GOTO , recuerde que el hecho de existir NO lo obliga a usarla , en el mismo sentido que por tener puertas los aviones no está obligado a saltar por ellas en pleno vuelo.
El uso del GOTO implica un salto incondicional de un lugar a otro del programa . Esta práctica hace que los programas sean muy dificiles de corregir ó mantener.
Si no quedara más remedio que usarlo, (y en programación estructurada SIEMPRE hay remedio) debe marcarse el destino del salto mediante un nombre seguido por dos puntos .if( c == 0 ) goto OTRO_LADO ; ............................. OTRO_LADO: printf(........


En este caso si c es cero se saltean todas las sentencias entre el if y el destino , continuandose con la ejecución del printf() . El destino puede ser tanto posterior como anterior al GOTO invocante .

almacenamiento, direccionamiento y representacion en memoria



4.3.4.- Almacenamiento, direccionamiento y representación en memoria.



Almacenamiento
La computadora posee determinada cantidad de almacenamiento interno denominado memoria principal, memoria RAM o memoria volátil. Esta memoria se activa al encender la computadora y se desactiva al apagarla. Para que un programa se ejecute, debe cargarse en la memoria principal, así como los datos necesarios. Como es más costosa, es un recurso escaso donde sólo se almacenan los datos que se requieren de inmediato, y los demás se relegan a los dispositivos de almacenamiento externo, donde la capacidad de almacenamiento es mayor, pero también el tiempo de recuperación. Por otra parte, el costo del almacenamiento externo es más bajo.
Direccionamiento
La memoria principal de la computadora se divide en pequeñas unidades de tamaño uniforme denominadas palabras, que tienen una dirección única.
Cada una de éstas palabras es capaz de almacenar una unidad de información (como, por ejemplo, resultados numéricos), y determina el número más grande y el más pequeño que puede almacenar.
El tamaño de la palabra depende de la computadora, pero siempre se especifica en múltiplos de 8 bits. Así, existen computadoras con tamaños de palabra de 8, 16, 32 y 64 bits.
Cada palabra de la memoria principal tiene una dirección fija que va de cero hasta el número total de palabras - 1. Las direcciones de memoria sirven para identificar cada palabra individualmente, de tal manera que pueda accederse al dato contenido en ella. A fin de simplificar su comprensión, las memorias se consideran como una hilera de palabras.
Por ejemplo, suponiendo que la memoria principal de una computadora tiene un tamaño de palabra de 8 bits, la cinta de color amarillo que se muestra enseguida podría representar las tres primeras palabras:



Dirección
P a l a b r a
Valor en decimal
0000
0
1
0
0
1
0
1
1
75
0001
0
1
0
0
0
0
0
1
65
0002
0
0
1
1
0
0
1
0
50
Representación en memoria
La representación en memoria de los caracteres no reviste mayor complicación, debido a que los códigos utilizados, como el ASCII (American Standard Code for Information Interchange), les asignan valores enteros positivos.
En el caso de los datos numéricos hay que considerar la distinción entre números negativos y positivos, y la que hay entre números de punto flotante y enteros.
Los signos se manejan normalmente mediante el bit más significativo de la palabra (el situado a la extrema izquierda), y se le denomina bit de signo. Cuando el bit de signo almacena un cero, el número se considera positivo; cuando almacena un uno el número es negativo. Es por esto que, si el tamaño de la palabra es de m bits, quedan m-1 bits para representar la magnitud del número almacenado.
Los números de punto flotante se manejan en formato logarítmico, con un número fijo de bits para la base y otro para la mantisa. El estándar para los números de punto flotante lo fija el IEEE.
Debido al formato logarítmico, los cálculos que se hacen con tipos de punto flotante no son tan precisos como los que se hacen con tipos enteros.
Resultado de imagen para almacenamiento, direccionamiento y representacion en memoria

identificadores

Identificadores en lenguajes informáticos

Resultado de imagen para identificadores
En los lenguajes informáticos, los identificadores son elementos textuales (también llamados símbolos) que nombran entidades del lenguaje. Algunas de las de entidades que un identificador puede denotar son las variables, las constantes, los tipos de dato, las etiquetas, las subrutinas (procedimientos y funciones) y los paquetes.
En muchos lenguajes algunas secuencias tienen la forma léxica de un identificador pero son conocidos como palabras clave (o palabras reservadas). Lo habitual es que si un identificador se corresponde con una palabra clave o reservada, éste ya no pueda utilizarse para referirse a otro tipo de entidades como variables o constantes (en unos pocos lenguajes, como PL/1, esta distinción no está del todo clara).
Los lenguajes informáticos normalmente ponen restricciones en qué caracteres pueden aparecer en un identificador. Por ejemplo, en las primeras versiones de C y C++, los identificadores están restringidos para que sean una secuencia de una o más letras ASCII, dígitos numéricos (que en ningún caso deben aparecer como primer carácter) y barras bajas. Las versiones posteriores de estos lenguajes, así como otros muchos más lenguajes modernos soportan casi todos los caracteres Unicode en un identificador. Una restricción común es que no está permitido el uso de espacios en blanco ni operadores del lenguaje.
En lenguajes de programación compilados, los identificadores generalmente son entidades en tiempo de compilación, es decir, en tiempo de ejecución el programa compilado contiene referencias a direcciones de memoria y offsets más que identificadores textuales (estas direcciones de memoria u offsets, han sido asignadas por el compilador a cada identificador).
En lenguajes interpretados los identificadores están frecuentemente en tiempo de ejecución, a veces incluso como objetos de primera clase que pueden ser manipulados y evaluados libremente. En Lisp, éstos se llaman símbolos.
Los compiladores e intérpretes normalmente no asignan ningún significado semántico a un identificador basado en la secuencia de caracteres actual. Sin embargo, hay excepciones. Por ejemplo:
  • En Perl una variable se indica utilizando un prefijo llamado sigil, que especifica aspectos de cómo se interpreta la variable en las expresiones.
  • En Ruby una variable se considera automáticamente como inmutable si su identificador empieza con una letra mayúscula.
  • En Fortran, la primera letra de una variable indica si por defecto es creada como entero o como flotante.

Identificadores C++

Los identificadores C++ pueden contener las letras a a z y A a Z, el guión bajo "_" ("Underscore") y los dígitos 0 a 9.

Caracteres permitidos

a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Dígitos permitidos

0 1 2 3 4 5 6 7 8 9
Solo hay dos restricciones en cuanto a la composición:
  • El primer carácter debe ser una letra o el guión bajo. El Estándar establece que los identificadores comenzando con guión bajo y mayúscula no deben ser utilizados. Este tipo de nombres se reserva para los compiladores y las Librerías Estándar. Tampoco se permite la utilización de nombres que contengan dos guiones bajos seguidos.
  • El estándar ANSI establece que como mínimo serán significativos los 31 primeros caracteres, aunque pueden ser más, según la implementación. Es decir, para que un compilador se adhiera al estándar ANSI, debe considerar como significativos, al menos, los 31 primeros caracteres.
Los identificadores distinguen mayúsculas y minúsculas, así que Sum, sum y suM son distintos para el compilador. Sin embargo, C++Builderofrece la opción de suspender la sensibilidad a mayúsculas / minúsculas, lo que permite la compatibilidad con lenguajes insensibles a esta cuestión, en este caso, las variables globales Sum, sum y suM serían consideradas idénticas, aunque podría resultar un mensaje de aviso "Duplicate symbol" durante el enlazado.
Con los identificadores del tipo pascal hay una excepción a esta regla, ya que son convertidos siempre a mayúsculas con vistas al enlazado.
Los identificadores globales importados desde otros módulos siguen las mismas reglas que los identificadores normales.
Aunque los nombres de los identificadores pueden ser arbitrarios (dentro de las reglas señaladas), se produce un error si se utiliza el mismo identificador dentro del mismo ámbito compartiendo el mismo espacio de nombres. Los nombres duplicados son legales en diferentes espacios de nombres con independencia de las reglas de ámbito.
Un identificador no puede coincidir con una palabra clave o con el de ninguna función de biblioteca.

Tipos de identificadores

El estándar ANSI distingue dos tipos de identificadores:
  • Identificadores internos; los nombres de macros de preprocesado y todas las que no tengan enlazado externo. El estándar establece que serán significativos, al menos, los primeros 31 caracteres.
  • Identificadores externos; los que corresponden a elementos que tengan enlazado externo. En este caso el estándar es más permisivo. Se acepta que el compilador identifique solo seis caracteres significativos y pueda ignorar la distinción mayúsculas/minúsculas

Reglas de estilo

Es bastante frecuente que en la enseñanza de C++ (y de cualquier otro lenguaje de programación) no se subraye suficientemente la importancia de la elección de los identificadores. En este sentido, los textos se suelen limitar a señalar las reglas formales que impone el lenguaje para la declaración de nombres. Sin embargo, como todos los que tienen que ver con la legibilidad del código, el asunto es de capital importancia. Sobre todo, si se trata de algo más que del consabido programita "Hola mundo", y desde luego resulta crítico en proyectos medianamente grandes en los que puedan trabajar más de un programador y/o deba ser mantenido por personas distintas de su creador original (lo que antes o después acaba ocurriendo en la informática empresarial).
C y C++ tienen sus propias reglas no escritas, sancionadas por la costumbre, en cuanto a ciertas formas concretas de usar los identificadores. Por ejemplo: Es costumbre utilizar minúsculas para los nombres de variables y funciones (con frecuencia se utilizan combinaciones minúsculas/Mayúsculas - por ejemplo getRvalue o rColor-, aunque la inicial suele ser minúscula). Los identificadores de variables automáticas lo más cortos posibles; los de estáticas y globales más largos y descriptivos. Los nombres de constantes simbólicas normalmente en mayúsculas.
Ejemplo:
void someFunc (int numero, char clave, int* puntero_a_clase); //
static tipoCliente = 0; //
enum formaPago { CONTADO, CREDITO }; //
...
someFunc(int n, char k, int *ptr) { //
int z, y, z = 2; //
}
Aparte de las manías o hábitos particulares que pueda tener cada programador, la mayoría de empresas de software medianamente serias disponen de sus propios "Manuales de estilo" o "Reglas de uso", en los que se recogen las convenciones que deben utilizarse para los identificadores, de forma que se mantenga la máxima homogeneidad posible en el código, lo que a la postre redunda en una mayor legibilidad y facilidad de mantenimiento. En este sentido cabría señalar que, dentro de ciertos límites, no es tan importante cuales sean estas reglas, sino que existan y se respeten.
En determinados entornos existen reglas consagradas por el uso. Por ejemplo, en la programación C/C++ para las plataformas Windowssuelen seguirse determinadas convenciones conocidas como Notación Húngara, en la que el identificador de cada variable comienza con una o varias letras (minúsculas) que señalan el tipo de la variable. Por ejemplo, nValor.
Los nombres de clases se preceden siempre con una "C" mayúscula, y la siguiente letra también es mayúscula. Por ejemplo: CAboutDlg, CAprenderApp, CMainFrame, etc. Los nombres de variables comienzan por letras fijas según su tipo, pero cuando se refieren a una propiedad de clase, los dos primeros caracteres son "m_" (ejemplo m_nValor, m_wndStatusBar, etc). Los nombres de funciones miembro de clase comienzan siempre con mayúscula, pero la siguiente letra es minúscula. Por ejemplo: DoDataExchange(), InitInstance(), OnAppAbout(), etc.
Este tipo de notación presenta la ventaja de con un poco de práctica es mucha la información que puede extraerse de la simple lectura del código.

tipos de datos

Tipos de datos

Resultado de imagen para tipos de datos
Un tipo de datos es la propiedad de un valor que determina su dominio (qué valores puede tomar), qué operaciones se le pueden aplicar y cómo es representado internamente por el computador.
Todos los valores que aparecen en un programa tienen un tipo.
A continuación revisaremos los tipos de datos elementales de Python. Además de éstos, existen muchos otros, y más adelante aprenderemos a crear nuestros propios tipos de datos.

Números enteros

El tipo int (del inglés integer, que significa «entero») permite representar números enteros.
Los valores que puede tomar un int son todos los números enteros: ... -3-2-10123, ...
Los números enteros literales se escriben con un signo opcional seguido por una secuencia de dígitos:
1570
+4591
-12

Números reales

El tipo float permite representar números reales.
El nombre float viene del término punto flotante, que es la manera en que el computador representa internamente los números reales.
Hay que tener mucho cuidado, porque los números reales no se pueden representar de manera exacta en un computador. Por ejemplo, el número decimal 0.7 es representado internamente por el computador mediante la aproximación 0.69999999999999996. Todas las operaciones entre valores float son aproximaciones. Esto puede conducir a resultados algo sorpresivos:
>>> 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7
0.9999999999999998
Los números reales literales se escriben separando la parte entera de la decimal con un punto. Las partes entera y decimal pueden ser omitidas si alguna de ellas es cero:
>>> 881.9843000
881.9843
>>> -3.14159
-3.14159
>>> 1024.
1024.0
>>> .22
0.22
Otra representación es la notación científica, en la que se escribe un factor y una potencia de diez separados por una letra e. Por ejemplo:
>>> -2.45E4
-24500.0
>>> 7e-2
0.07
>>> 6.02e23
6.02e+23
>>> 9.1094E-31
9.1094e-31
Los dos últimos valores del ejemplo son iguales, respectivamente, a 6.02×1023 (la constante de Avogadro) y 9.1094×1031 (la masa del electrón).

Números complejos

El tipo complex permite representar números complejos.
Los números complejos tienen una parte real y una imaginaria. La parte imaginaria es denotada agregando una j inmediatamente después de su valor:
3 + 9j
-1.4 + 2.7j

Valores lógicos

Los valores lógicos True y False (verdadero y falso) son de tipo bool, que representa valores lógicos.
El nombre bool viene del matemático George Boole, quien creó un sistema algebraico para la lógica binaria. Por lo mismo, a True y False también se les llama valores booleanos. El nombre no es muy intuitivo, pero es el que se usa en informática, así que hay que conocerlo.

Texto

A los valores que representan texto se les llama strings, y tienen el tipo str.
Los strings literales pueden ser representados con texto entre comillas simples o comillas dobles:
"ejemplo 1"
'ejemplo 2'
La ventaja de tener dos tipos de comillas es que se puede usar uno de ellos cuando el otro aparece como parte del texto:
"Let's go!"
'Ella dijo "hola"'
Es importante entender que los strings no son lo mismo que los valores que en él pueden estar representados:
>>> 5 == '5'
False
>>> True == 'True'
False
Los strings que difieren en mayúsculas y minúsculas, o en espacios también son distintos:
>>> 'mesa' == 'Mesa'
False
>>> ' mesa' == 'mesa '
False

Nulo

Existe un valor llamado None (en inglés, «ninguno») que es utilizado para representar casos en que ningún valor es válido, o para indicar que una variable todavía no tiene un valor que tenga sentido.
El valor None tiene su propio tipo, llamado NoneType, que es diferente al de todos los demás valores.