Você está aqui: C ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
Escrevendo funções C que possuem um ou mais parâmetrosQuantidade de visualizações: 8036 vezes |
Funções em C são blocos de códigos que podem ser chamados a partir da função main() ou qualquer outra função de seu programa. O uso de funções promove o reaproveitamento de códigos. Nesta dica veremos como criar funções que possuem um ou mais parâmetros, ou seja, ao efetuar chamadas a estas funções nós podemos controlar o seu comportamento. Veja um exemplo de um função que recebe um texto e o exibe na tela:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // uma função que recebe um texto e o escreve // na tela void escrever(const char *texto){ printf(texto); } int main(int argc, char *argv[]){ // vamos efetuar uma chamada à função escrever() e // fornecer o texto a ser escrito char frase[] = "Gosto muito de Java e C++"; escrever(frase); puts("\n\n"); system("PAUSE"); return 0; } Note que a função escrever() possui como parâmetro um ponteiro para um cadeia de caracteres. O uso de const antes do tipo do ponteiro é para evitar que o conteúdo da variável sendo fornecida seja alterado. Ao efetuar a chamada à função escrever() a partir do main() nós estamos fornecendo o texto a ser escrito. Neste caso nós estamos fornecendo um argumento à função. Uma função pode ter inúmeros parâmetros. E cada parâmetro pode ser de um tipo diferente. Veja uma modificação da função anterior de forma a permitir um valor informando a quantidade de vezes que o texto será exibido: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // uma função que recebe um texto e o escreve // na tela um determinado número de vezes void escrever(const char *texto, int vezes){ int i; for(i = 0; i < vezes; i++) printf("%s\n", texto); } int main(int argc, char *argv[]){ // vamos efetuar uma chamada à função escrever() e // fornecer o texto a ser escrito 5 vezes char frase[] = "Gosto muito de Java e C++"; escrever(frase, 5); puts("\n\n"); system("PAUSE"); return 0; } Para finalizar, veja uma função que recebe três inteiros e escreve a soma dos valores: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // uma função que recebe três inteiros e exibe // sua soma void somar(int a, int b, int c){ int res = a + b + c; printf("Soma dos valores: %d", res); } int main(int argc, char *argv[]){ // vamos efetuar uma chamada à função somar() e // fornecer os valores 4, 2, 1 somar(4, 2, 1); puts("\n\n"); system("PAUSE"); return 0; } |
Link para compartilhar na Internet ou com seus amigos: |
C ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Apostila C para iniciantes - Como usar ponteiros na linguagem CQuantidade de visualizações: 32361 vezes |
Antes de pensarmos em ponteiros, é importante nos lembrarmos de alguns aspectos referentes à variáveis. Dependendo do seu conhecimento de programação, você deve saber que variáveis possuem nomes que as identificam durante a execução do programa. Você deve saber também que uma variável armazena um valor (que pode ser fixo, no caso de uma constante, ou pode mudar durante a execução de seus códigos). O que poucos programadores se lembram é que uma variável possui um endereço, e que o nome da variável não é nada mais que um apelido para a localização deste endereço. Desta forma, um ponteiro não é nada mais que um tipo especial de variável que armazena o endereço de outra. Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // variável do tipo int int valor = 10; // ponteiro para uma variável do tipo int int *p = &valor; // exibe o valor da variável "valor", apontada // pelo ponteiro p printf("%d", *p); printf("\n\n"); system("PAUSE"); return 0; } Neste código nós temos a declaração e definição de duas variáveis: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int valor = 10; int *p = &valor; A primeira variável é uma variável do tipo int e a segunda é um ponteiro para uma variável do tipo int. Veja que devemos sempre usar "*" antes do nome de um ponteiro em sua declaração. O símbolo "&" serve para indicar que estamos acessando o endereço de uma variável e não o seu conteúdo. O resultado destas duas linhas é que agora temos um ponteiro que nos permite acessar e manipular a variável valor. Observe a linha: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- printf("%d", *p); Aqui nós estamos acessando o valor da variável apontada por p. Veja o uso do símbolo "*" para acessar o valor da variável. Isso é chamado de desreferenciamento de ponteiros. Pareceu complicado? Veja uma linha de código que altera indiretamente o valor da variável valor para 30: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- *p = 30; Ponteiros são ferramentas muito importantes na programação em C. No entanto, é preciso ter muito cuidado ao lidar com eles. A primeira coisa a ter em mente é que um ponteiro não está apontando para nenhum lugar até que atribuimos a ele o endereço de uma outra variável. E é aí que mora o perigo. Um programa entra em colapso absoluto se tentarmos acessar um ponteiro que aponta para um local de memória que já foi liberado novamente ao sistema. No caso menos grave, estaremos tentando acessar locais de memória inválidos ou reservados a outros programas ou tarefas do sistema operacional. Isso me lembra os velhos tempos da tela azul de morte. |
C ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o coeficiente angular de uma reta em C dados dois pontos no plano cartesianoQuantidade de visualizações: 3411 vezes |
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x. Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano: Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é: \[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \] Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente. Veja agora o trecho de código na linguagem C que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ // coordenadas dos dois pontos float x1, y1, x2, y2; // guarda o coeficiente angular float m; // x e y do primeiro ponto printf("Coordenada x do primeiro ponto: "); scanf("%f", &x1); printf("Coordenada y do primeiro ponto: "); scanf("%f", &y1); // x e y do segundo ponto printf("Coordenada x do segundo ponto: "); scanf("%f", &x2); printf("Coordenada y do segundo ponto: "); scanf("%f", &y2); // vamos calcular o coeficiente angular m = (y2 - y1) / (x2 - x1); // mostramos o resultado printf("O coeficiente angular é: %f", m); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: Coordenada x do primeiro ponto: 3 Coordenada y do primeiro ponto: 6 Coordenada x do segundo ponto: 9 Coordenada y do segundo ponto: 10 O coeficiente angular é: 0.666667 Pressione qualquer tecla para continuar... Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ // coordenadas dos dois pontos float x1, y1, x2, y2; // guarda os comprimentos dos catetos oposto e adjascente float cateto_oposto, cateto_adjascente; // guarda o ângulo tetha (em radianos) e a tangente float tetha, tangente; // x e y do primeiro ponto printf("Coordenada x do primeiro ponto: "); scanf("%f", &x1); printf("Coordenada y do primeiro ponto: "); scanf("%f", &y1); // x e y do segundo ponto printf("Coordenada x do segundo ponto: "); scanf("%f", &x2); printf("Coordenada y do segundo ponto: "); scanf("%f", &y2); // vamos obter o comprimento do cateto oposto cateto_oposto = y2 - y1; // e agora o cateto adjascente cateto_adjascente = x2 - x1; // vamos obter o ângulo tetha, ou seja, a inclinação da hipetunesa // (em radianos, não se esqueça) tetha = atan2(cateto_oposto, cateto_adjascente); // e finalmente usamos a tangente desse ângulo para calcular // o coeficiente angular tangente = tan(tetha); // mostramos o resultado printf("O coeficiente angular é: %f", tangente); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta: 1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0; 2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0; 3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0). 4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe. |
C ::: Dicas & Truques ::: Struct (Estruturas, Registros) |
Linguagem C para iniciantes - Como usar estruturas (struct) em CQuantidade de visualizações: 68201 vezes |
Vetores e matrizes (arrays) são muito importantes quando precisamos agrupar várias variáveis de um mesmo tipo de dados. Porém, há casos em que precisamos agrupar variáveis de diferentes tipos. Para estes casos a linguagem C nos fornece as estruturas (struct). Veja como declará-las:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // uma estrutura Pessoa struct Pessoa { char *nome; int idade; }; Veja que esta estrutura possui dois tipos de dados diferentes: um ponteiro para uma cadeia de caracteres e uma variável do tipo int. Para declarar variáveis do tipo Pessoa você tem duas opções. A primeira consiste em declarar as variáveis juntamente com a declaração da estrutura. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // uma estrutura Pessoa struct Pessoa { char *nome; int idade; }pessoa, cliente, chefe; A outra forma consiste em declarar a variável no local no qual ela será usada. Esta forma é mais prática. Veja um exemplo completo de como isso é feito: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // uma estrutura Pessoa struct Pessoa { char *nome; int idade; }; int main(int argc, char *argv[]) { // declara uma variável do tipo struct struct Pessoa cliente; cliente.nome = "Osmar J. Silva"; cliente.idade = 36; // obtém os dados printf("O nome do cliente e: %s\n", cliente.nome); printf("A idade do cliente e: %d\n", cliente.idade); printf("\n\n"); system("PAUSE"); return 0; } |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |