El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras -...
Transcript of El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras -...
![Page 1: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/1.jpg)
Organización de ComputadorasOrganización de ComputadorasDepto. Cs. e Ing. Depto. Cs. e Ing. dede la Comp. la Comp.Universidad NacionalUniversidad Nacional deldel SurSur
El Lenguaje de El Lenguaje de Programación CProgramación C
(Pt. 1)(Pt. 1)
![Page 2: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/2.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 22
CopyrightCopyrightCopyright © 2011-2018 A. G. Stankevicius
Copyright © 2019 F. Joaquín
Se asegura la libertad para copiar, distribuir y modificar este documento de acuerdo a los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation, sin secciones invariantes ni textos de cubierta delantera o trasera
Una copia de esta licencia está siempre disponible enla página http://www.gnu.org/copyleft/fdl.html
![Page 3: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/3.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 33
ContenidosContenidosIntroducción al paradigma imperativo
Sentencias de control
Entrada y salida estándar
Gestión de archivos
Pasaje de parámetros
Tipos de datos estructurados
Gestión de la memoria dinámica
Estructuras de datos dinámicas
![Page 4: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/4.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 44
Paradigmas de programaciónParadigmas de programaciónEl paradigma al cual pertenece un lenguaje nos da indicios acerca de distintas cuestiones:
De qué manera resulta más conveniente encararel proceso de resolución de un problema
Qué abstracciones tenemos a disposición para implementar los distintos componentes dela solución propuesta
Finalmente, la elección del paradigma también determina la manera en que se lleva adelante la computación
![Page 5: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/5.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 55
Paradigmas de programaciónParadigmas de programaciónA partir de las características fundamentales,los lenguajes de programación se pueden clasificar en distintos paradigmas:
Paradigma imperativo
Paradigma funcional
Paradigma lógico
Paradigma orientado a objetos
El lenguaje de programación C perteneceal primero
![Page 6: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/6.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 66
Paradigma imperativoParadigma imperativoAnalicemos en particular el caso del paradigma imperativo:
Para resolver un problema debemos postular un algoritmo, esto es, una secuencia de instrucciones simples, que conduzca a la solución del mismo
Podemos hacer uso de variables, asignaciones y contamos con tres poderosos constructores:la secuencia, el condicional y la repetición
Este paradigma sanciona que la computación se lleva adelante a través de la ejecución de instrucciones relativamente simples
![Page 7: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/7.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 77
Paradigma imperativoParadigma imperativoEste paradigma recibe su nombre por el tipode instrucciones simples que emplea: verbos conjugados en modo imperativo
Por ejemplo:
printf(): imprima con el siguiente formato los datos consignados a continuación
exit(): finalice la ejecución inmediatamente e informe el siguiente nivel de error
![Page 8: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/8.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 88
Compiladores vs. intérpretesCompiladores vs. intérpretesLenguajes interpretados:
Las instrucciones se transforman en lenguaje máquina a medida que se ejecuta el programa
Los pequeños cambios pueden probarse rápidamente
Lenguajes compilados:
Los programas son traducidos en su totalidad a lenguaje máquina antes de ser ejecutados
Para probar un pequeño cambio se debe compilar todo nuevamente
Hay combinación de ambos métodos
![Page 9: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/9.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 99
Origen del lenguajeOrigen del lenguajeEl lenguaje C fue diseñado porDennis Ritchie en el año 1972
Deriva de un lenguaje anteriorllamado B
Se usó para implementar granparte del sistema operativo UNIX
Hoy en día se lo sigue utilizandopara implementar todo tipo de sistemas:
Por caso, el sistema operativo GNU/Linux
![Page 10: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/10.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 1010
Filosofía de diseñoFilosofía de diseñoC es un lenguaje de programación minimalista
Intenta satisfacer múltiples objetivos:
Poder ser compilado usando un compilador sencilloy simple
Brindar acceso de bajo nivel al hardware de la computadora
Poder traducir cada instrucción de C en pocas instrucciones de lenguaje máquina
No requerir mucha ayuda adicional en tiempode ejecución
![Page 11: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/11.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 1111
C hoy – Mitos de CC hoy – Mitos de C“C no se usa” ¿Por qué programar en C?
Sistemas Operativos (casi todos, GNU/Linux, OS X, Windows, Android, QNX, Solaris)
Java Virtual Machine (si, está escrita en C)
Sistemas Embebidos (Arduino, Galileo, Raspberry)
Controladores de dispositivos (drivers)
Motores de bases de datos (MySQL, PostgreSQL, etc.)
Cualquier sistema de alto desempeño
![Page 12: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/12.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 1212
C hoy – Mitos de CC hoy – Mitos de C“No hay trabajo en C”- Según Spectrum IEEE:
https://spectrum.ieee.org/at-work/innovation/the-2018-top-programming-languages
![Page 13: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/13.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 1313
Características de CCaracterísticas de CCuenta con excelentes compiladores optimizantes, por caso el gcc
El código escrito en este lenguaje es altamente portable
Ninguna característica del sistema operativose ve reflejada en el lenguaje
![Page 14: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/14.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 1414
Características de CCaracterísticas de CElementos de un programa:
Palabras reservadas (muy pocas)
Variables y funciones definidas por el programador
Funciones de librería estándar
Los bloques de código se delimitan entre llaves
Al igual que UNIX, el lenguaje C es sensible amayúsculas y minúsculas (case sensitive)
Por ejemplo, fact() y Fact() denotan a dos funciones diferentes
![Page 15: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/15.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 1515
Características de CCaracterísticas de CEl lenguaje C es un lenguaje compilado
Ejemplos: Pascal o Modula2
Otros lenguajes de programación son en cambio interpretados
Ejemplos: Prolog o Haskell
Por último, también existen lenguajes compilados e interpretados a la vez:
Ejemplo: Java
![Page 16: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/16.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 1616
Características de CCaracterísticas de CTodas las sentencias terminan en punto y coma
Los espacios en blanco y los tabuladores son ignorados
Podemos (¡debemos!) indentar adecuadamenteel código
C cuenta con un preprocesador, que realiza alteraciones en el código (indicadas por el programador) antes de la compilación
![Page 17: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/17.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 1717
Código fuente CCódigo fuente CEl código fuente en C tiene tres tiposde contenido:
Comentarios
Código de programa (escrito en C)
Directivas al preprocesador
![Page 18: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/18.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 1818
Nuestro primer programaNuestro primer programa/* Clásico hola mundo escrito en C para comprensión de los alumnos de OC */
#include <stdio.h>
int main() {
// Una llamada a función
printf(“¡Hola mundo!\n”);
return 0;
}
![Page 19: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/19.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 1919
ComentariosComentarios/* Clásico hola mundo escrito en C para comprensión de los alumnos de OC */
#include <stdio.h>
int main() {
// Una llamada a función
printf(“¡Hola mundo!\n”);
return 0;
}
![Page 20: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/20.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 2020
Código de programaCódigo de programa/* Clásico hola mundo escrito en C para comprensión de los alumnos de OC */
#include <stdio.h>
int main() {
// Una llamada a función
printf(“¡Hola mundo!\n”);
return 0;
}
![Page 21: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/21.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 2121
Directivas al preprocesadorDirectivas al preprocesador/* Clásico hola mundo escrito en C para comprensión de los alumnos de OC */
#include <stdio.h>
int main() {
// Una llamada a función
printf(“¡Hola mundo!\n”);
return 0;
}
![Page 22: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/22.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 2222
SentenciasSentenciasCada sentencia finaliza con ;
Las sentencias pueden encerrarse entre { }
Una sentencia es una expresión
/* La sentencia a continuación compila,
pero su resultado no tiene efectos */
2 + 2;
![Page 23: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/23.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 2323
AsignaciónAsignaciónLa asignación es una expresión y puede ser parte de una expresión mas compleja
Su operador es el “=”El primer elemento a izquierda debe ser el nombrede una variable
Tiene asociatividad a derecha
El resultado de la evaluación de una asignación, además del cambio en la variable, es el valor asignado a la variable
![Page 24: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/24.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 2424
AsignaciónAsignaciónLa asignación como operador da una gran flexibilidad, si bien es a su vez es fuente de problemas (para nosotros los programadores):
a = b = 2; // a y b terminan con el valor 2
a = (b = 2) + 2; /* b obtiene el valor 2 y
a el valor 4 */
![Page 25: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/25.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 2525
Declaración de variablesDeclaración de variablesLas variables se declaran indicando su tipo seguido de su nombre:
char letra;
int contador;
![Page 26: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/26.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 2626
Declaración de variablesDeclaración de variablesDeclaración múltiple es posible separando las distintas variables con “,”:
char letra, inicial;
int i, j, k;
Declaración e inicialización se pueden combinar usando el operador de asignación:
char letra = ’A’;
int i = 1, j = 10;
![Page 27: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/27.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 2727
Tipos elementalesTipos elementalesLos tipos elementales son:
Enteros (int)
Reales en precisión simple (float)
Reales en precisión doble (double)
Caracteres y enteros de 1 byte (char)
Punteros (*)
Nótese que no existen los booleanos ni las cadenas de caracteres como tipos elementales
![Page 28: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/28.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 2828
ModificadoresModificadoresLos tipos elementales admiten distintos modificadores:
unsigned: para representar sólo valores positivos
Ej: unsigned int contador;
signed: para representar valores positivos y negativos (este es el modificador activo por defecto)
Ej: signed char letra;
long: para representar enteros largos (sólo puede aplicarse al tipo int)
Ej: long int balance;
![Page 29: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/29.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 2929
Alcance de una declaraciónAlcance de una declaraciónEn el lenguaje C no es posible anidar funciones
En consecuencia, sólo hay dos alcances posibles para una declaración:
Alcance global: La declaración es visible desde todas las funciones del programa
Alcance local: La declaración sólo es visible dentro de la función en la que aparece y tiene precedencia por sobre las declaraciones globales
![Page 30: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/30.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 3030
Alcance de una declaraciónAlcance de una declaraciónint x, y;
int main() {
float x, z;
/* Aquí y sigue siendo entero, pero x y z
ahora son reales */
}
/* x e y vuelven a ser enteros, y además z
no existe por fuera de la función main() */
![Page 31: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/31.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 3131
Expresiones constantesExpresiones constantesFormulación de expresiones constantes:
Una constante real (float) se puede expresar tanto en notación decimal (2.56) como en notación científica (2.45E-4)
Una constante de tipo doble precisión (long) se denota agregando una L al final (200L)
Una constante de tipo carácter (char) se define directamente usando comillas simples (‘a’)
Una constante de tipo cadena de caracteres se define usando comillas dobles (“hola!”)
![Page 32: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/32.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 3232
Expresiones constantesExpresiones constantesUna constante entera puede expresarse en las bases:
Decimal, por ejemplo: 15
Hexadecimal, anteponiento 0x a la declaración:0xF o 0xf (esta declaración es case insensitive)
Octal, anteponiendo 0 a la declaración: 017
Binario, anteponiendo 0b a la declaración: 0b1111
![Page 33: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/33.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 3333
Expresiones constantesExpresiones constantesLas constantes de tipo carácter especial se definen usando secuencias de escape:
‘\n’: línea nueva
‘\r’: retorno de carro
‘\t’: tabulador
‘\\’: barra invertida
‘\0’: carácter nulo
‘\nnn’: carácter ASCII nnn (en octal)
‘\xnn’: carácter ASCII nn (en hexadecimal)
![Page 34: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/34.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 3434
Conversión explícita de tiposConversión explícita de tiposLa conversión explícita de tipos (type casting) de expresiones y variables se denota de la siguiente forma:
int a; float b; char c;
b = 65.0; /* probar qué pasa si acá
ponemos directamente 65 */
a = (int) b; // a ahora vale 65
c = (char) a; /* c ahora vale ‘A’
(esto es, el ASCII 65) */
![Page 35: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/35.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 3535
Operadores aritméticosOperadores aritméticosLos operadores aritméticos básicos disponibles son los usuales:
Suma (+)
Resta (–)
Multiplicación (*)
División (/)
Módulo o resto (%)
![Page 36: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/36.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 3636
División entera vs. realDivisión entera vs. realEl tipo del resultado de la operación de división depende enteramente del tipo de los operandos involucrados en la expresión
Por ejemplo:
4 / 3 da 1 (entero)
4.0 / 3 da 1.333 (real)
4 / 3.0 da 1.333 (real)
4.0 / 3.0 da 1.333 (real)
![Page 37: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/37.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 3737
Pre y post incrementoPre y post incrementoLos operadores unarios (++) y (--) representan las operaciones de incremento y decremento respectivamente
x++; y ++x; equivalen a la asignación x = x + 1;
y--; y --y; equivalen a la asignación y = y – 1;
Por caso, las notaciones sufijas y prefijas:
a=3; b=a++; // a vale 4, b vale 3
a=3; b=++a; // a vale 4, b vale 4
No cualquier cosa es válida: --b=a++;
![Page 38: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/38.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 3838
Variantes de asignaciónVariantes de asignaciónExisten diversas variantes del operador de asignación:
x += y; es equivalente a x = x + y;
x –= y; es equivalente a x = x – y;
x *= y; es equivalente a x = x * y;
x /= y; es equivalente a x = x / y;
El lado izquierdo de una asignación debe necesariamente ser del tipo adecuado
Caso contrario, usar una conversión explícita de tipo
![Page 39: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/39.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 3939
Operaciones a nivel de bitOperaciones a nivel de bitEl lenguaje C brinda un conjunto de operadores numéricos a nivel de bit:
Negación: ~x;
Conjunción: x & y;
Disyunción: x | y;
Disyunción exclusiva: x ^ y;
Desplazamiento a izquierda: x << n;
Desplazamiento a derecha: x >> n;
![Page 40: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/40.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 4040
Operaciones a nivel de bitOperaciones a nivel de bitint x = 26;
int y = 61;
x & y;
x | y;
~x;
x >> 2;
00011010 = 26
00111101 = 61
00011000 = 24
00111111 = 63
11100101 = -27
00000110 = 6
![Page 41: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/41.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 4141
Operaciones a nivel de bitOperaciones a nivel de bitExisten diversas variantes del operador de asignación a nivel de bits:
x &= y; es equivalente a x = x & y;
x |= y; es equivalente a x = x | y;
x <<= y; es equivalente a x = x << y;
x >>= y; es equivalente a x = x >> y;
![Page 42: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/42.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 4242
Operadores relacionalesOperadores relacionalesLos operadores relacionales disponibles son:
Igual (==)
Distinto (!=)
Mayor (>) y mayor o igual (>=)
Menor (<) y menor o igual (<=)
El resultado de una comparación es un entero, el cual se interpreta de la siguiente manera:
El cero denotará el valor falso
Cualquier otro valor denotará el valor verdadero
![Page 43: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/43.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 4343
Operadores lógicosOperadores lógicosSobre los datos de tipo booleano (es decir, los enteros), se definen los siguientes operadores:
La conjunción lógica (&&)
La disyunción lógica (||)
La negación lógica (!)
Por caso:
/* ¿a cuánto evalúa la siguiente expresión?*/
rsta = (3 > 2 || 5 == 4) && !1;
![Page 44: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/44.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 4444
Expresiones en corto-circuitoExpresiones en corto-circuitoEl lenguaje C implementa un modelo de evaluación perezosa para las expresiones booleanas
Por caso:
a = (3 > 2 || w == 4);
/* la subexpresión w == 4
nunca llega a evaluarse */
// ¿por qué razón?
![Page 45: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/45.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 4545
Sentencia condicionalSentencia condicionalLa sentencia condicional tiene la siguiente sintaxis:
if (condición) {
// código a ejecutarse si
// la condición se satisface
} else {
// código a ejecutarse en
// caso contrario.
}
![Page 46: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/46.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 4646
Sentencia condicionalSentencia condicional#include <stdio.h>
main() {
int a = 2;
if (a % 2) {
printf(“dos es impar\n”);
} else {
printf(“dos es par\n”);
}
}
![Page 47: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/47.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 4747
Sentencia condicionalSentencia condicional#include <stdio.h>
main() {
int a = 2;
if (a % 2)
printf(“dos es impar\n”);
else
printf(“dos es par\n”);
}
![Page 48: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/48.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 4848
Expresiones condicionalesExpresiones condicionalesLas construcciones del siguiente tipo
if (condición)
rsta = exp-1;
else
rsta = exp-2;
se pueden abreviar en el lenguaje C empleando expresiones condicionales.
Sintaxis:
rsta = condición ? exp-1 : exp-2;
![Page 49: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/49.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 4949
Expresiones condicionalesExpresiones condicionales#include <stdio.h>
main() {
int a = 2;
printf(“dos es %s\n”,
a % 2 ? “impar” : “par”);
}
![Page 50: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/50.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 5050
Sentencias de repeticiónSentencias de repeticiónLa sentencia de repetición for es muy flexible:
for (cont = 0; cont < tope; cont++) {
/* bloque de sentencias que se
repiten mientras se cumpla la
condición de permanencia */
}
![Page 51: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/51.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 5151
Sentencias de repeticiónSentencias de repetición#include <stdio.h>
main() {
int cont;
for (cont = 0; cont < 10; cont++) {
printf("%i al cuadrado es %i\n",
cont, cont * cont);
} // ¿llegará hasta 10 * 10?
}
![Page 52: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/52.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 5252
Sentencias de repeticiónSentencias de repeticiónTambién es posible repetir un fragmentode código mientras se cumpla una cierta condición:
while (condición) {
/* bloque de sentencias que se repiten
cero o más veces mientras se cumpla la
condición de permanencia */
}
![Page 53: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/53.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 5353
Sentencias de repeticiónSentencias de repetición#include <stdio.h>
main() {
int cont = 0;
while (cont < 10) {
printf("%i al cuadrado es %i\n",
cont, cont * cont);
cont++;
} // ahora ¿llegará hasta 10 * 10?
}
![Page 54: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/54.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 5454
Sentencias de repeticiónSentencias de repeticiónPor último, existe una segunda variante parala sentencia de repetición basada en la satisfacción de una condición:
do {
/* bloque de sentencias que se repinte
al menos una vez mientras se cumpla la
condición de permanencia */
} while (condición);
![Page 55: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/55.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 5555
Sentencias de repeticiónSentencias de repetición#include <stdio.h>
main() {
int cont = 0;
do {
printf("%i al cuadrado es %i\n",
cont, cont * cont);
cont++;
} while (cont < 10); // ¿y ahora?
}
![Page 56: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/56.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 5656
Sentencias break y continueSentencias break y continueAl estar dentro del ámbito de una sentenciade repetición, se puede hacer uso de dos sentencias de control especiales:
break: esta sentencia permite romper una repetición, retomando la ejecución en la instrucción inmediata siguiente
continue: esta sentencia permite indicar que la iteración actual ya fue completada y que se desea considerar la siguiente iteración
![Page 57: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/57.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 5757
Sentencias break y continueSentencias break y continue#include <stdio.h>
main() {
int cont = 0;
do {
printf("%i visitado\n", cont);
cont++;
if (cont > 10)
break;
} while (1); // ¿cuándo corta?
}
![Page 58: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/58.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 5858
Sentencias break y continueSentencias break y continue#include <stdio.h>
main() {
int cont = 0;
do {
cont++;
if ((cont % 2) == 0)
continue;
printf("%i visitado\n", cont);
} while (cont < 10); // ¿qué imprime?
}
![Page 59: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/59.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 5959
Alternativas múltiplesAlternativas múltiples switch (alternativa) {
case caso-1: { // bloque-1 }
case caso-2: { // bloque-2 }
...
case caso-n: { // bloque-n }
default: { // bloque por defecto }
}
![Page 60: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/60.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 6060
Alternativas múltiplesAlternativas múltiples#include <stdio.h>
main() {
char letra = '\x42';
switch (letra) {
case 'A': { printf("A\n"); }
case 'B': { printf("A o B\n");
break; }
case 'C': { printf("C\n"); }
}
}
![Page 61: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/61.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 6161
Alternativas múltiplesAlternativas múltiplesSólo acepta tipos simples
switch (alternativa) {
case “caso 1”: // No compila!
...
}
![Page 62: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/62.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 6262
Continuamos la próxima claseContinuamos la próxima clase
¿¿Preguntas?Preguntas?
![Page 63: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/63.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 6363
Llamada a funcionesLlamada a funcionesUna función es llamada dentro de una expresión, con sus parámetros definidos de forma posicional, separados por “,”:
c = suma(a, b);
Como las sentencias son expresiones sin limitaciones, las funciones pueden ser llamadas descartando el resultado. En esencia esto equivale a contar con un procedimiento
suma(a, b);
![Page 64: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/64.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 6464
Pasaje de parámetrosPasaje de parámetrosPasaje por valor o por copia:
Al pasar un parámetro por valor estamos pasando una copia del contenido, por lo que las modificaciones que haga la rutina en esa copia no se verán reflejadas en el original
Pasaje por referencia:
Al pasar un parámetro por referencia estamos mostrando como acceder a ese argumento pues estamos pasando la dirección en memoria del mismo. Naturalmente, las modificaciones que haga la rutina se ven inmediatamente reflejadas en el original
![Page 65: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/65.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 6565
Pasaje de parámetrosPasaje de parámetrosSi bien C no cuenta con pasaje de parámetros por referencia, cuenta con un operador que permite simular ese pasaje de parámetros
El operador & determina la dirección en memoriade la expresión a su derecha
Por caso:
int a = 5;
printf("a vale %i\n", a); // ¿por qué %i se
printf("&a vale %p\n", &a); // cambia por %p?
![Page 66: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/66.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 6666
Definición de funcionesDefinición de funcionesLa definición de una función guarda la siguiente estructura:
tipo nombre (parámetros) {
// cuerpo de la función
}
![Page 67: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/67.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 6767
Definición de funcionesDefinición de funcionesUna función se invoca al suministrar valores actuales a sus parámetros formales
Recordemos, los parámetros formales son los que figuran en la definición de una función y los actuales son los usados en una invocación en concreto
Los parámetros siempre se pasan por valor
El resultado de la invocación a una función se especifica por medio de la sentencia return
![Page 68: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/68.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 6868
Definición de funcionesDefinición de funcionesLos procedimientos, si bien no contemplados en el lenguaje, se pueden definir indicando que una cierta función no retorna resultado
Para esto se debe hacer uso del tipo especial void
El control del número y tipo de los parámetros es mínimo
Se puede definir una cosa y luego hacer otra a la hora de la invocación
Las funciones admiten llamadas recursivas
![Page 69: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/69.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 6969
Definición de funcionesDefinición de funcionesint fact(int n) {
int rsta = 1;
while (n > 1)
rsta *= n--;
return(rsta);
}
int main() {
printf(“%d! = %d\n”, 5, fact(5));
}
![Page 70: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/70.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 7070
Definición de funcionesDefinición de funcionesvoid f(int* a, int b) { *a = b;}int main() { int x = 5; int y = 1; printf("x = %d\n", x); f(&x, y); printf("x = %d", x); return 0;}
![Page 71: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/71.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 7171
Definición vs. declaraciónDefinición vs. declaraciónC sólo permite invocar a funciones previamente definidas
¿cómo hacer para definir programas que hagan uso de una recursión cruzada?
Es posible separar espacialmente la declaración de una función de su definición:
La definición explicita el código asociado a la función
La declaración sólo explicita la cabecera o prototipo de la misma
![Page 72: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/72.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 7272
Definición vs. declaraciónDefinición vs. declaraciónint impar(int n); // prototipo de impar()
int par(int n) { // definición de par()
return !n ? 1 : impar(--n);
}
int impar(int n) { // definición de impar()
return !n ? 0 : par(--n);
}
![Page 73: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/73.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 7373
Entrada y salida estándarEntrada y salida estándarLas funciones de entrada/salida estándar en C no pertenecen al lenguaje en sí, sino que son provistas por diversas funciones de librería
Recordemos que uno de los objetivo diseño es lograr una alta portabilidad, por lo que el lenguaje debe ser absolutamente independiente del sistema operativo
Por caso,
Funciones de entrada: getchar(), scanf(), etc.
Funciones de salida: putchar(), printf(), etc.
![Page 74: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/74.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 7474
La función printf()La función printf()La invocación a la función printf() guardala siguiente sintaxis:
printf(
formato-a-utilizar,
exp-1, exp-2, ..., exp-n);
donde:
El formato a utilizar es una cadena que describe cómo mostrar la información
Las expresiones son los datos que se desean mostrar
![Page 75: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/75.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 7575
La función printf()La función printf()int x = 3; float y = 23.0; char z = ‘A’;
printf(“Hola mundo!!\n”);
printf(“x vale %d\n”, x);
printf(
“y vale %f,\n...y z vale %c.\n”,
y, z);
![Page 76: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/76.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 7676
Expresiones de formatoExpresiones de formatoEn la E/S estándar, se puede hacer uso de las siguientes expresiones de formato (entre otras):
%c: carácter
%i: entero
%d: entero decimal
%x: entero hexadecimal
%f: real
%p: puntero
%s: cadena de caracteres
![Page 77: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/77.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 7777
Expresiones de formatoExpresiones de formatoExisten muchas otras expresiones que controlan otros aspectos del formato:
La precisión (número de decimales)
La justificación (a izquierda o a derecha)
Poder escribir ciertos caracteres especiales (por ejemplo, el carácter %)
Consultar la referencia de esta función enla bibliografía recomendada:
“The C Programming Language”, escrito porB. Kernighan y D. Ritchie
![Page 78: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/78.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 7878
La función scanf()La función scanf()La invocación a la función scanf() guarda la siguiente sintaxis:
scanf(
formato-a-utilizar,
dest-1, dest-2, ..., dest-n);
donde:
El formato a utilizar es una cadena que describe cómo recibir la información
Los destinos son las variables donde se almacenan los datos ingresados
![Page 79: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/79.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 7979
La función scanf()La función scanf()int x; float y; char z;
printf(“Ingrese un número entero: ”);
scanf(“%d”, &x); // ¡x se modifica!
printf(“\nOtro entero y un real: ”);
scanf(“%u %f”, &x, &y);
printf(“\nAhora un caracter: ”);
scanf(“%c”, &z);
![Page 80: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/80.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 8080
Gestión de archivosGestión de archivosC comparte la filosofía UNIX en el sentidode considerar prácticamente todo comosi fuera un archivo:
La lectura de información desde un archivo convencional no difiere del ingreso de datosa través del teclado
La escritura de información hacia un archivo convencional no difiere de la salida de datospor pantalla
![Page 81: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/81.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 8181
Funciones de libreríaFunciones de libreríaC cuenta con diversas funciones de librería sobre archivos:
FILE* fopen(char*, char*): apertura de un archivo para lectura o escritura
int fclose(FILE*): cierre de un archivo
int fprintf(FILE*, ...): escritura con formato
int fscanf(FILE*, ...): lectura con formato
int feof(FILE*): determina si se ha alcanzadoel final de un archivo
![Page 82: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/82.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 8282
Archivos especialesArchivos especialesTodo programa asocia tres constantes de tipo FILE* por defecto a los siguientes archivos:
stdin: entrada estándar (descriptor 0)
stdout: salida estándar (descriptor 1)
stderr: error estándar (descriptor 2)
Por caso:
fprintf(1, “Usuario: ”);
fscanf(0, “%s”, usuario);
fprintf(stderr, “Error: No válido”);
![Page 83: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/83.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 8383
Conversión de tiposConversión de tiposC cuenta con diversas funciones de libreríapara asistir al programador en la conversión entre tipos de datos:
int atoi(char*): traduce de strings a enteros
long atol(char*): traduce de strings a enteros largos
double atof(char*): traduce de strings a reales
char* itoa(char*, int): traduce de enterosa strings
![Page 84: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/84.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 8484
Finalización de un programaFinalización de un programaUn programa finaliza:
Al llegar al final de la función main()
Cuando la función main() invoca un return
Al ejecutar la función exit()(la cual reside en la librería estándar stdlib)
#include <stdlib.h>
int main() {
exit(0);
return 1; // Esto no se ejecutará
}
![Page 85: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/85.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 8585
Inconvenientes de CInconvenientes de CError en las condiciones
if (a = 1)
printf(“a es verdadero\n”);
else
printf(“a es falso\n”);
![Page 86: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/86.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 8686
Inconvenientes de CInconvenientes de CEs posible escribir código un tanto críptico:
int **********x; // Puntero a puntero a...
// Copia un arreglo terminado en null a otro
while (*n++=*i++) ;
// Invierte dígitos hexadecimales
i=((n&0x0F)<<4 | (n&0xF0)>>4);
Competencia de quién puede escribir el código más ilegible en C:
http://www.ioccc.org
![Page 87: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/87.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 8787
Buenas prácticasBuenas prácticasDefinir las constantes como macros
Macros en mayúsculas separados por guiones
#define PI 3.1416
Variables y funciones en minúsculas separadas por guiones
void funcion_de_nombre_largo();
int variable_entera;
![Page 88: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/88.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 8888
Buenas prácticasBuenas prácticasLargo de las líneas de código: un máximode entre 79 y 100 caracteres
¡¡Que compile sin warnings!!
No realizar asignaciones dentro de expresiones:
a = (b = 2) + 2;
Elegir una convención y respetarla a lo largode todo el código
![Page 89: El Lenguaje de Programación C (Pt. 1)ags/OC/downloads/APUNTES DE...Organización de Computadoras - Mg. A. G. Stankevicius 5 Paradigmas de programación A partir de las características](https://reader034.fdocumento.com/reader034/viewer/2022052320/5f192d0462e75351f11c90b1/html5/thumbnails/89.jpg)
Organización de Computadoras - Mg. A. G. StankeviciusOrganización de Computadoras - Mg. A. G. Stankevicius 8989
¿¿Preguntas?Preguntas?