Elementos de Linguagem C

Documentos relacionados
Algoritmo e Técnica de Programação - Linguagem C

Linguagem C Ficheiros Compilação Separada

Linguagem C: diretivas, compilação separada. Prof. Críston Algoritmos e Programação

Algoritmos e Programação

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Computação e Programação

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Carlos Eduardo Batista. Centro de Informática - UFPB

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton

Programação Estruturada

3. Linguagem de Programação C

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

Curso Profissional de Técnico de Informática - Sistemas

Ambiente de desenvolvimento

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Sumário. Ficheiros. Ficheiros

Conhecendo a Linguagem de Programação C

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

A ferramenta make. A - Introdução. O C é orientado para a produção de aplicações informáticas de grande dimensão

Programação II. Módulos, Encapsulamento e TADs. Bruno Feijó Dept. de Informática, PUC-Rio

Métodos Computacionais

Linguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira

Mestrado em Engenharia Física Tecnológica

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Introdução a Programação de Jogos

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Introdução à Programação

Cláudio C. Rodrigues Faculdade da Computação - UFU. Faculdade da Computação - UFU 1

Introdução à Linguagem C Variáveis e Expressões

A Linguagem C. A forma de um programa em C

Linguagem C Princípios Básicos (parte 1)

4. Estruturas Fundamentais de Programação em C

Programação em Sistemas Computacionais

Introdução à Programação em C

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

Introdução a Computação

O que é um apontador em C (type pointer in C)?

Introdução à Programação em C (I)

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

Regras de estilo para código fonte em C/C++

Algoritmos RESUMO - LINGUAGEM C

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Transcrição:

Elementos de Linguagem C Parte II Elementos de linguagem C Parte II 1

Macros O pré-processador da linguagem C suporta a substituição de macros, criadas com #define nome_macro texto de substituição As macros admitem parâmeros #define nome_macro(param) texto com param nome_macro(ola) origina: texto com ola Uma macro pode ser definida em várias linhas desde que terminadas por '\' Se uma macro contiver mais do que um statement, deve escrever-se de forma a evitar ambiguidades, nomeadamente quando usada em if-else #define nome_macro do{ \ statement1; \ statement2; \ }while(0) Elementos de linguagem C Parte II 2

Macros Operador # O operador # aplicado a um parâmetro produz uma string com o texto desse parâmetro Exemplo: #define print(param) \ printf("valor de " #param ": %d\n", param); Se existir um int x, escrevendo print(x) expande para: printf("valor de " "x" ": %d\n", x); Se x tiver o valor 10, resulta na consola: valor de x: 10 Elementos de linguagem C Parte II 3

Macros Operador ## O operador ## entre duas palavras do texto de substituição produz uma única palavra com a junção daquelas. Exemplo: #define declara_var(param) \ int var ## param; A utilização declara_var(1) declara_var(2) declara_var(3) Expande para int var1; int var2; int var3; Elementos de linguagem C Parte II 4

Inclusão de ficheiros A directiva #include promove a abertura do ficheiro indicado e a compilação do seu conteúdo, como se pertencesse ao ficheiro onde se encontra a directiva Os ficheiros incluídos podem, por sua vez, incluir outros A aplicação mais frequente deste mecanismo é a publicação de protótipos de funções definidas num módulo de programa e usadas noutro O nome do ficheiro incluído é delimitado por < > ou por "" conforme se trate de um ficheiro de sistema ou definido pelo programador #include <stdio.h> /* standard input-output header-file */ #include "mymodule.h" /* definições relativas a mymodule.c */ Elementos de linguagem C Parte II 5

Programas com módulos Na construção de programas em vários módulos, a compilação de cada módulo origina um módulo compilado; a ligação produz o executável a partir dos módulos compilados Cada módulo pode definir variáveis e funções usadas no mesmo módulo ou noutros Se em vários módulos for declarada uma variável externa, com o mesmo nome, a ligação localiza-a como uma única variável, partilhada entre esses módulos. Por razões de estruturação, recomenda-se que a interface entre módulos seja realizada através de funções e não por variáveis partilhadas Se um módulo utilizar uma função definida noutro, sem conhecer o seu protótipo, considera-a com retorno inteiro e parâmetros correspondentes à chamada realizada Para assegurar a coerência entre as funções definidas e a sua utilização, usa-se o mecanismo de inclusão para declarar, nos módulos de definição e de utilização, o protótipo da função Elementos de linguagem C Parte II 6

Programas com módulos main.c #include "myfunc.h"... int main(void){ }... x = myfunc(1, 2);... return 0; myfunc.h int myfunc(int a, int b); myfunc.c #include "myfunc.h" int myfunc(int a, int b){ }... return...; Elementos de linguagem C Parte II 7

Compilação condicional # if expressão... /* compilado se a expressão for!= 0 */ #else... /* compilado no caso contrário */ #endif # ifdef identificador... /* compilado se o identificador estiver definido */ #endif # ifndef identificador... /* compilado se o identificador não estiver definido */ #endif Elementos de linguagem C Parte II 8

Compilação condicional Selecção de código alternativo no mesmo ficheiro fonte Controlo de código de debug Eliminação da inclusão múltipla Um ficheiro de inclusão pode incluir outros, úteis ao módulo em causa Um módulo pode incluir explicitamente um ficheiro e incluí-lo de novo, inadvertidamente, por ser invocado noutro A duplicação das definições contidas no ficheiro pode, e deve, ser eliminada com compilação condicional Elementos de linguagem C Parte II 9

Eliminação da inclusão múltipla myfunc.h #ifndef _MYFUNC_H_ #define _MYFUNC_H_ int myfunc(int a, int b); #endif Elementos de linguagem C Parte II 10

Qualificadores auto alojamento automático (por omissão dentro das funções) register variável automática candidata a alojamento em registo extern alojamento externo (quando usado dentro de uma função, aloja a variável como se estivesse fora da função) const objecto semelhante a variável mas com conteúdo constante volatile indica que a variável pode mudar de estado sem intervenção do programa; implica a supressão de optimizações que poderiam causar uso errado static diversos significados consoante o contexto de utilização Elementos de linguagem C Parte II 11

Qualificador Static Declaração privada de objectos num módulo Uma variável externa ou função, por omissão, é pública definida num módulo e utilizável noutros Com o qualificador static torna-se privada só é conhecida dentro do módulo nomes iguais em módulos diferentes, com static são objectos distintos Alojamento de variáveis internas a funções Contraria o alojamento automático A variável é alojada numa posição fixa da memória e permanece activa durante toda a execução do programa Pelas regras de scope, a variável só é conhecida dentro da função Elementos de linguagem C Parte II 12

Variáveis de ambiente Os ambientes de execução suportam a definição de variáveis de ambiente nome=texto Estas variáveis são úteis para configurar o comportamento dos programas Os programas podem aceder a todas as variáveis de ambiente através do ponteiro extern char **environ; Ou obter o texto de uma variável específica com a função getenv() definida no header stdlib.h char *getenv(const char *name); Elementos de linguagem C Parte II 13

Biblioteca normalizada As bibliotecas são colecções de funções compiladas, cujo código é seleccionado pelo linker, de acordo com as referências de utilização, e incluído no executável A biblioteca normalizada contém funções, de carácter utilitário e de interface com o ambiente de execução, especificadas no livro The C Programming Language, Appendix B Para que os programas utilizadores conheçam os protótipos das funções, devem incluir o ficheiro header com a respectiva definição assert.h float.h math.h stdarg.h stdlib.h ctype.h limits.h setjmp.h stddef.h string.h errno.h locale.h signal.h stdio.h time.h Elementos de linguagem C Parte II 14