Linguagem C
86 pág.

Linguagem C


DisciplinaAlgoritmos e Estrutura de Dados I720 materiais7.908 seguidores
Pré-visualização18 páginas
chamados de algoritmos recursivos. Por exemplo: O cálculo do fatorial 
de um número é definido pela seguinte expressão: 
 
 
onde n é o número inteiro positivo. Uma propriedade dos fatoriais é: 
 
 
Uma função recursiva cria a cada chamada um novo conjunto de variáveis locais. Não 
existe ganho de velocidade ou espaço de memória significativo com o uso de funções recursivas. A 
principal vantagem das funções recursivas é que pode ser utilizadas para criar versões mais claras e 
simples de vários algoritmos. Um exemplo não recursivo: 
int fact(int n) 
{ 
 int t, answer; /*Declaração das variáveis t e answer*/ 
 answer=1; 
 for (t=1; t<=n; t++) 
 answer=answer*(t); 
 return(answer); /*retorna answer*/ 
} 
Um exemplo recursivo: 
!3*41*2*3*4!5
1*2*3*...*)2(*)1(*!
==
\u2212\u2212= nnnn
)!1(*! \u2212= nnn
 50
int fact_r(int n) 
{ 
 int t, answer; /*Declaração das variáveis t e answer*/ 
 if (n==1) return(1); 
 answer=fact_r(n-1)*n; 
 return(answer); /*retorna answer*/ 
} 
 
10.3 Função main 
A função main pode aceitar parâmetros via argumentos da linha de comando. Um 
argumento da linha de comando é a informação que segue o nome do programa na linha de 
comando do sistema operacional. Há dois argumentos internos especiais: argc e argv. 
int main(int argc, char* argv[]) 
O parâmetro argc contém o número de argumentos da linha de comando. Ele é sempre 
pelo menos 1 porque o nome do programa é qualificado como primeiro argumento. O parâmetro 
argv é um ponteiro para uma matriz de ponteiros para caractere. Cada elemento nessa matriz aponta 
para o argumento da linha de comando. 
1. #include <stdio.h> 
2. #include <stdlib.h> 
3. 
4. int main(int argc, char * argv[]) 
5. { 
6. if (argc!=2) 
7. prinf(\u201dVoce esqueceu de digitar seu nome\n\u201d); 
8. else 
9. printf(\u201dOla %s!\n\u201d, argv[1]); 
10. return(0); 
11. } 
 
1. #include <stdio.h> 
2. #include <stdlib.h> 
3. 
4. int main(int argc, char * argv[]) 
5. { 
6. int i; 
7. printf(&quot;The value of argc is %d \n\n&quot;, argc); 
8. printf(&quot;These are the %d command-line arguments passed to main:\n\n&quot;, argc); 
9. for (i = 0; i < argc; i++) 
10. printf(&quot; argv[%d]: %s\n&quot;, i, argv[i]); 
11. printf(&quot;\nThe environment string(s) on this system are:\n\n&quot;); 
12. return(0); 
13. } 
 
10.4 Funções de String 
Função gets(): É utilizada para leitura de uma string através do dispositivo padrão, até que o 
ENTER seja pressionado. A função gets() não testa limites na matriz em que é chamada. 
Sintaxe (conio.h): 
char *gets(char *str); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. 
4. int main(void) 
5. { 
6. char string[80]; 
7. printf(&quot;Input a string:&quot;); 
8. gets(string); 
 51
9. printf(&quot;The string input was: %s\n&quot;, string); 
10. return(0); 
11. } 
 
Função puts(): Escreve o seu argumento no dispositivo padrão de saída (vídeo), coloca um '\n' no 
final. Reconhece os códigos de barra invertida. 
Sintaxe (stdio.h): 
int puts(const char *str); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. 
4. int main(void) 
5. { 
6. char string[] = &quot;This is an example output string\n&quot;; 
7. puts(string); 
8. return(0); 
9. } 
 
Função strcpy(): Copia o conteúdo de uma string. 
Sintaxe (string.h): 
char *strcpy(char *destino, const char *origem); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. 
4. int main(void) 
5. { 
6. char string[10]; 
7. char *str1 = &quot;abcdefghi&quot;; 
8. strcpy(string, str1); 
9. printf(&quot;%s\n&quot;, string); 
10. return(0); 
11. } 
 
Função strcat(): Concatena duas strings. Não verifica tamanho. 
Sintaxe (string.h): 
char *strcat(char *str1, const char *str2); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. 
4. int main(void) 
5. { 
6. char s1[80], s2[80]; 
7. 
8. gets(s1); 
9. gets(s2); 
10. strcat(s2, s1); 
11. printf(&quot;%s\n&quot;, s2); 
12. return(0); 
13. } 
 
Função strcmp(): Compara duas strings, se forem iguais devolve 0. Se str1 > str2, devolve > 0. Do 
contrário se str1 < str2, devolve < 0. 
Sintaxe (string.h): 
int strcmp(const char *str1, const char *str2); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. 
4. int main(void) 
5. { 
6. char *buf1 = &quot;aaa&quot;, *buf2 = &quot;bbb&quot;, *buf3 = &quot;ccc&quot;; 
 52
7. int ptr; 
8. 
9. ptr = strcmp(buf2, buf1); 
10. if (ptr > 0) 
11. printf(&quot;buffer 2 is greater than buffer 1\n&quot;); 
12. else 
13. printf(&quot;buffer 2 is less than buffer 1\n&quot;); 
14. ptr = strcmp(buf2, buf3); 
15. if (ptr > 0) 
16. printf(&quot;buffer 2 is greater than buffer 3\n&quot;); 
17. else 
18. printf(&quot;buffer 2 is less than buffer 3\n&quot;); 
19. return(0); 
20. } 
 
10.5 Funções Matemáticas 
Função acos(): Devolve o arco co-seno do argumento. 
Sintaxe (math.h): 
double acos(double arg); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. #include <math.h> 
4. 
5. int main(void) 
6. { 
7. double result; 
8. double x = 0.5; 
9. result = acos(x); 
10. printf(&quot;The arc cosine of %lf is %lf\n&quot;, x, result); 
11. return(0); 
12. } 
 
Função asin(): Devolve o arco seno do argumento. 
Sintaxe (math.h): 
double asin(double arg); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. #include <math.h> 
4. 
5. int main(void) 
6. { 
7. double result; 
8. double x = 0.5; 
9. result = asin(x); 
10. printf(&quot;The arc sin of %lf is %lf\n&quot;, x, result); 
11. return(0); 
12. } 
 
Função atan(): Devolve o arco tangente do argumento. 
Sintaxe (math.h): 
double atan(double arg); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. #include <math.h> 
4. 
5. int main(void) 
6. { 
7. double result; 
8. double x = 0.5; 
9. result = atan(x); 
10. printf(&quot;The arc tangent of %lf is %lf\n&quot;, x, result); 
11. return(0); 
12. } 
 53
Função cos(): Devolve o co-seno do argumento. 
Sintaxe (math.h): 
double cos(double arg); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. #include <math.h> 
4. 
5. int main(void) 
6. { 
7. double result; 
8. double x = 0.5; 
9. result = cos(x); 
10. printf(&quot;The cosine of %lf is %lf\n&quot;, x, result); 
11. return(0); 
12. } 
 
Função sin(): Devolve o seno do argumento. 
Sintaxe (math.h): 
double sin(double arg); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. #include <math.h> 
4. 
5. int main(void) 
6. { 
7. double result, x = 0.5; 
8. result = sin(x); 
9. printf(&quot;The sin of %lf is %lf\n&quot;, x, result); 
10. return(0); 
11. } 
 
Função tan(): Devolve a tangente do argumento. 
Sintaxe (math.h): 
double tan(double arg); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. #include <math.h> 
4. 
5. int main(void) 
6. { 
7. double result, x = 0.5; 
8. result = tan(x); 
9. printf(&quot;The tan of %lf is %lf\n&quot;, x, result); 
10. return(0); 
11. } 
 
Função exp(): Devolve o logaritmo natural e elevado à potência arg. 
Sintaxe (math.h): 
double exp(double arg); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. #include <math.h> 
4. 
5. int main(void) 
6. { 
7. double result; 
8. double x = 4.0; 
9. result = exp(x); 
10. printf(&quot;'e' raised to the power of %lf (e ^ %lf) = %lf\n&quot;, x, x, result); 
11. return(0); 
12. } 
 
 54
Função fabs(): Devolve o valor absoluto do argumento. 
Sintaxe (math.h): 
double fabs(double arg); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. #include <math.h> 
4. 
5. int main(void) 
6. { 
7. float number = -1234.0; 
8. printf(&quot;number: %f absolute value: %f\n&quot;, number, fabs(number)); 
9. return(0); 
10. } 
 
Função fmod(): Devolve o resto de x/y. 
Sintaxe (math.h): 
double fmod(double x, double y); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. #include <math.h> 
4. 
5. int main(void) 
6. { 
7. double x = 5.0, y = 2.0; 
8. double result; 
9. result = fmod(x,y); 
10. printf(&quot;The remainder of (%lf / %lf) is %lf\n&quot;, x, y, result); 
11. return(0); 
12. } 
 
Função log(): Devolve o logaritmo natural do argumento. 
Sintaxe (math.h): 
double log(double arg); 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. #include <math.h> 
4. 
5. int main(void) 
6. { 
7. double result; 
8. double x = 8.6872; 
9. result