Estrutura de um programa em linguagem C Estrutura de um programa em linguagem C Directivas de Pré-Processamento Exemplo de um programa em linguagem C #include <stdio.h> #include <stdilib.h> Declarações Globais Declarações das funções int main(void) { int main(void) { printf(“Hello World\n”); Definições Locais return 0; Instruções } } Universidade Metodista de Angola, Departamento de Engenharias, Programação I, Gustavo Sebastião 1 Estrutura Básica de um programa em Linguagem C Directivas de Pré-Processamento Declarações Globais Declarações das funções As funções são delimitadas por chavetas { }. Definições Locais } Definição/Declaração de variáveis globais Definições de estruturas de forma global, ou seja, válida em todos os sub-blocos do programa Na realidade as funções podem ser declaradas antes ou depois da função main Programa em linguagem C contém sempre a função main int main(void) { Instruções Nessas directivas contém funções, e ferramentas pré-definidas e prontas a serem usadas. Definição/Declaração de variáveis locais Conjunto de instruções que irão constituir o programa (Obs: uma instrução especifica a tarefa que o processador irá executar) Universidade Metodista de Angola, Departamento de Engenharias, Programação I, Gustavo Sebastião 2 Exemplo:Cálculo da área do circulo Pseudo-código Descrição Narrativa Cálculo da área do círculo Obter o raio do círculo Se o raio for negativo, escrever “raio invalido” Se não, calcular a área do circulo usando Calcula_Area.c Solução usando Linguagem C Escreve(“Raio invalido”); a expressão (A=π.R2) Terminar o Algoritmo. Fluxograma Convencional inicio Raio < 0? Escrever(“raio inválido”) Senão Area ← PI * Raio * Raio; Escrever(Area); Fim Se Fim #include <stdio.h> #include <stdlib.h> int main( ){ int raio; int Area; scanf(“%d”,&raio); Ler(Raio) Sim Programa Calculo_da_area_do_círculo Area, Raio: Real PI = 3.14159 Inicio Ler(Raio); Se (Raio < 0) então if(raio < 0){ printf(“raio inválido”); } else{ Area = 3.14 * raio * raio; printf(“%f”,Area); } exit(0); Não Area ← π. Raio. Raio Escrever(Area) } Fim Universidade Metodista de Angola, Departamento de Engenharias, Programação I, Gustavo Sebastião 3 Exemplo:Cálculo da Média do aluno Descrição Narrativa Cálculo da média de um aluno Obter as suas duas notas de prova Calcular a média aritmética Se a média for maior que 9.5 O aluno aprovou Senão, o aluno reprovou Fluxograma Convencional inicio Pseudo-código Programa Calculo_da_media_de_um_aluno N1, N2, MEDIA : Real; Solução usando Inicio Calcula_Media_do_Aluno.c Linguagem C Ler (N1, N2); MEDIA← (N1+N2)/2; Se (MEDIA >= 9.5) então Escreva(“Aprovado”); Senão #include <stdio.h> Escreva(“Reprovado”); #include <stdlib.h> Fim Se Fim int main( ){ int N1,N2; float Media; scanf(“%d %d”,&N1, &N2); Ler(N1,N2) Media = (N1+N2)/2; Media ← ( N1 +N2 ) / 2 S Media >= 9.5 ? “Aprovado” N “Reprovado” if(Media >= 9.5){ printf(“Aprovou”); } else{ printf(“Reprovou”); } exit(0); } Fim Universidade Metodista de Angola, Departamento de Engenharias, Programação I, Gustavo Sebastião 4 Próximos tópicos a serem estudados Solução usando Linguagem C Nome do programa Calcula_Area.c #include <stdio.h> #include <stdlib.h> int main( ){ int raio; int Area; Directivas (inclusão de bibliotecas) Declaração de variáveis Função que permite a entrada de dados no programa scanf(“%d”,&raio); if(raio < 0){ printf(“raio inválido”); } else{ Area = 3.14 * raio * raio; printf(“raio inválido”); } exit(0); Estrutura de controlo de execução das instruções Atribuição de valores às variáveis e utilização de operadores (*) Utilização de funções presentes nas bibliotecas pré-definidas } Universidade Metodista de Angola, Departamento de Engenharias, Programação I, Gustavo Sebastião 5 Estrutura de um programa Regras gerais usadas em linguagem C • Toda função tem um corpo delimitado por { }. • Toda função é precedida de parênteses (). • Todo programa em linguagem C deverá conter uma função m ain . • As linhas de códigos/instruções são sempre encerradas por ponto-e-virgula (;). • Os comentários são delimitados por /* */ ou ainda // – Exemplo: /* engenharia informática */ – ou //engenharia informática Universidade Metodista de Angola, Departamento de Engenharias, Programação I, Gustavo Sebastião 6 Estrutura de um programa stdlib.h #include <stdio.h> #include <stdilib.h> #define CONSTANTE 323 int atoi(const char *s); float atof(const char *s); (...) int main(void) { printf(“Hello World\n”); Essas directivas são ficheiros que contêm algumas funções pré-definidas stdio.h int printf(char *format,...); return 0; int scanf(char *format,...); int fgetc(FILE *filestream); (...) } O programador pode usar qualquer uma das funções existentes nesses ficheiros Universidade Metodista de Angola, Departamento de Engenharias, Programação I, Gustavo Sebastião 7 Estrutura de um programa Bibliotecas do Unix • Principais bibliotecas do sistema Unix/Linux Nome das bibliotecas stdio.h stdlib.h string.h math.h time.h signal.h limits.h Função Standard input/output Nºconversion, storage,alocation Manipulação de strings Funções matemáticas Manipulação de tempo/data Mandar signals aos processos Limites das constantes Tipo de funções no interior da biblioteca printf(); scanf(); fopen(); fclose(); fprintf();puts(); getchar(); atoi(); atof(); rand(); exit(); malloc(); abs(), etc. strcpy(); strcmp(); strlen();strcat() - concatenation,etc. sin(); cos(); exp(); sqrt(); fabs(); log(); pow(); sinh(), etc. clock(); time(); INT_MAX 32767, INT_MIN 32767, CHAR_BIT 8 bits Universidade Metodista de Angola, Departamento de Engenharias, Programação I, Gustavo Sebastião 8 Algumas funcões em C printf(): print + format Funcionalidade Imprime uma string ou um valor de uma variável no ecrã scanf() scan +format : lê dados do teclado e guarda-os numa variável fopen() Abre um ficheiro existente, se não existir cria o ficheiro fclose() fprintf() puts(): put string Fecha o ficheiro Imprime dados no ficheiro Escreve uma cadeia de caracteres no ecrã seguido de um carácter ‘\n’ getchar() atoi(): ask to int atof(): ask to int rand(): random exit() malloc:memory allocation abs() strcpy(): string copy strcmp():string compare strlen(): string length strcat(): string concatenation sin(); cos(); exp(); sqrt(); fabs(); log(); pow(); sinh() Lê um carácter (no buffer, etc) Converte uma string em um número inteiro Converte uma string em um número real Gera números aleatórios Sair do Programa ou terminar o programa Alocação dinâmica de memória Determina o valor absoluto de um número Copia os dados de uma string para outra Compara duas strings Determina o tamanho da string Efectua concatenação ou junção entre duas strings Determina o valor de sin(x) para um dado x (x em radianos) Determina o valor de cos(x) para um dado x (x em radianos) Determina o valor de exp(x) para um dado x Calcula a raiz quadrada de um dado número positivo Determina o valor absoluto de um número Determina o valor do logaritmo decimal de um dado valor x>0 Para efectuar operações de potenciação Determina o valor de um seno hiperbólico dado o ângulo x [radianos] clock() time() Universidade Metodista de Angola, Departamento de Engenharias, Programação I, Gustavo Sebastião 9