21 maio 2018

Este artigo faz parte do projeto #LTCode.

Hoje aprenderemos sobre strings que são basicamente um conjunto de caracteres armazenados em um vetor. Portanto é recomendado que tenha lido a aula 2.10 para que compreenda bem a aula de hoje.

A declaração segue o mesmo padrão de um vetor de caracteres: char nome[tamanho];

Portanto se queremos armazenar a palavra "Limon" dentro da string "nome", podemos fazer das seguintes formas a declaração:

char nome[] = "Limon Tec";

char nome[] = {'L','i','m','o','n',' ','T','e','c','\0'};

char nome[9];
nome[0]='L';
nome[1]='i';
nome[2]='m';
nome[3]='o';
nome[4]='n';
nome[5]=' ';
nome[6]='T';
nome[7]='e';
nome[8]='c';
nome[9]='\0';

Note que a ultima posição de um vetor de caracteres vai sempre receber o caracter '\0' que significa que ali acaba a string, no primeiro exemplo não é necessário colocar '\0' pois ele é inserido automaticamente pelo compilador já que está usando aspas duplas, portanto ao declarar o tamanho de uma string deve informar o tamanho de caracteres que você precisa mais um para o caractere \0.

Vale notar que 'A' é diferente de "A", o caractere declarado com aspas simples é UM caractere (ocupa 1 byte) e o com aspas duplas é uma STRING (no caso ocupa 2 bytes, já que inclui o caractere '\0' depois do 'A') - por isso uma string é também conhecida como vetor de caractere já que juntando estes caracteres do vetor pode-se formar uma string)

Suponha que você deseja imprimir a string nome que fizemos acima, é muito simples fazer isso utilizando a função printf. Exemplo: printf("%s",nome);

Mas como ler uma string, ou seja, pedir para o usuário digite uma string. Bom, você pode usar o scanf para a leitura de string, mas note que a variável que recebe a string não é precedida pelo &.

Forma certa: scanf("%s",nome);
Forma errada: scanf("%s",&nome);

Infelizmente temos um problema com o scanf pois ele vai ler somente uma palavra, ou seja, vai ler todos caracteres até encontrar um espaço, tab ou enter e inserir o caractere delimitador '\0'.

Portanto, caso deseja ler uma frase... melhor recorrer a outras funções, você pode usar a função gets ou fgets por exemplo.

Exemplos:
gets(nome);
fgets(nome,9,stdin); //(string,tamanho da string,stdin)

Importante ressaltar que a função fgets lê até encontrar um enter, e ele é inserido na string, no caso a string recebeu os caracteres: Limon Tec\n\0

A passagem de string para funções é exatamente igual a passagem de vetores para funções, releia a aula 2.8 caso necessite. 

Confira abaixo um exemplo de leitura e escrita de string e sua utilização em funções:


Bom, por hoje é isto. Na próxima aula apresentaremos as principais funções, já prontas para uso, com strings, elas nos ajuda a poupar tempo.

>> Próxima aula, em breve. 

17 maio 2018

Este artigo faz parte do projeto #LTCode

O exercícios abaixo englobam vetores e matrizes, compare sua resolução com a nossa logo abaixo.

1 - Faça um programa que leia um vetor com quinze posições para números inteiros. Depois da leitura, divida todos os seus elementos pelo maior valor do vetor. Mostre o vetor após os cálculos.

2 - Faça uma função que receba como parâmetro dois vetores de dez números inteiros, determine e mostre o vetor intersecção entre eles.

3 - Implemente a função: float max(float v[], int n); Que recebe um vetor de números reais e o número de elementos a considerar. Retorna o maior número entre os n primeiros elementos do vetor.

4 - Faça uma função que receba como parâmetro um vetor A com cinco números inteiros e retorne esses números ordenados de forma crescente.

5 - Elabore um programa que preencha uma matriz 6x3, calcule e mostre:
a) o maior elemento da matriz e sua respectiva posição, ou seja, linha e coluna;
b) o menor elemento da matriz e sua respectiva posição, ou seja, linha e coluna.

6 - Faça um programa que receba como entrada duas matrizes 3x3, A e B, e faça a multiplicação matricial de A por B.

7 - Faça uma função que receba uma matriz 10x10 de números inteiros e retorne o maior elemento. Este valor deverá ser mostrado no programa principal. *Dica: use uma constante e teste com matrizes pequenas.

8 - Faça uma função que receba como parâmetro um número inteiro x e uma matriz 5x5 de números inteiros. A função deverá retornar quantas vezes o número x aparece na matriz. Este valor deverá ser mostrado no programa principal.

Respostas abaixo: (se não carregar abaixo, clique aqui).
*Note que a resolução dos exercícios estão juntas no mesmo arquivo, portanto para rodar copie os códigos separadamente e salve cada um como numero-do-exercicio.c

>> Próxima aula, clique aqui.

16 maio 2018


Se você conferiu o nosso artigo "Tokens ERC20 - explicação simples" você já tem uma ideia de como funcionam os tokens na plataforma do ethereum. Caso contrário, é recomendado a leitura antes de continuar.

Este é um dos artigos que abordará a criação de tokens utilizando uma rede de teste, portanto apesar do conceito se aplicar na rede principal não nos responsabilizamos pelos seus atos ou perdas financeiras devido a mal configuração.

Vamos começar pela forma mais fácil de se criar um token e depois demonstraremos outros métodos. Primeiramente acesse o site metamask.io e instale em seu navegador a extensão. 


Depois de instalado a extensão, clique nela (ícone da raposa) e aceite os termos de uso. Em seguida, altere a rede para Ropsten Test Net - afinal não vamos utilizar a rede principal para criar nosso token de teste.
Feito isso, configure uma senha na extensão e depois será pedido que anote 12 palavras - anote-as e guarde pois elas servem para recuperar sua carteira. Pronto, sua carteira está configurada.
Agora acesse o site tokenfactory.surge.sh e clique em "Create Token Contract", em seguida preencha os campos na seguinte ordem:
- Total de tokens a ser emitidos
- Nome do token
- Quantidade de casas decimais do token
- Símbolo do token


*Sobre o total de token a ser emitidos, na imagem ali consta 21 milhões, mas como onde preenche a quantidade de casas decimais consta o número 8, isso significa que serão criados 0.21000000 tokens e não 21 milhões (falha nossa). Caso queira 21 milhões, é necessário que escreva 21000000 e mais 8 zeros: 2100000000000000 .

Antes de clicar em "Create Token",  você precisa de ter um pouco de ether para poder criar seu token, para isto você pode acessar qualquer faucet que dê ether da ropsten test net para seu endereço.
Você pode acessar a faucet https://faucet.metamask.io/ e clicar em "request 1 ether from faucet" para receber em seu endereço. Depois que a transação for confirmada, você verá seu saldo de 1 ether na extensão.
Agora você pode clicar em "Create Token" e clicar em "submit" na janela de notificação que abrir.
Feito isso, aguarde.
Depois, carregará um menu em que é possível fazer ações com o token que você acabou de criar. Como em "Transfer Nome do seu Token" é onde é possível enviar seu token para outras pessoas.

Na extensão, clique em ADD Token e cole o endereço do contrato do token que você acabou de criar para que ele apareça na sua carteira. Como você que criou o contrato, sua carteira estará segurando o total de tokens criados :) agora é só enviar para amigos que possuam um endereço de ethereum seu novo token - lembrando que o token só vai aparecer para eles se estiverem na rede de teste Ropsten.

Acesse o site ropsten.etherscan.io/token/endereço-do-contrato-do-seu-token (substitua o trecho em vermelho) você verá informações sobre o seu token.

Bom este foi o modo easy de criar um token apenas por diversão, aguarde pelos próximos artigos sobre o tema. Acesse tudo sobre criptomoedas que já publicamos clicando aqui.

Se você deseja um pouco dos 0.21 Limon Token (era para ser 21 milhões, errei feio) comente abaixo o endereço da sua carteira para que possamos lhe enviar um pouco.

14 maio 2018

Este artigo faz parte do projeto #LTCode.

Agora que você sabe vetores, se tiver lido a aula 2.10, você será capaz de compreender matrizes ou melhor: vetores multidimensionais.

Matrizes por serem um vetor com mais de uma dimensão, sua declaração precisa de 2 índices, sendo uma para linha e outro para coluna. 

Exemplo de declaração:

int matriz[3][4];

No exemplo acima, 3 se refere ao número de linhas e 4 ao número de colunas. Portanto a declaração de matrizes segue o padrão: tipo nome [nº de linhas] [nº de colunas];

Sua matriz pode ter mais que duas dimensões, basta ir adicionando [], mas note que ela ficará cada vez mais complexa. 

Exemplo: int X[2][4][3];
2 linhas, 4 colunas e 3 de profundidade.

Você pode usar matrizes em funções, mas é necessário que para uma função receber uma matriz é necessário especificar entre colchetes o tamanho da segunda dimensão. 

Exemplo: int funcao_qualquer(int matriz[][4]);

Caso a matriz passada para a função sofra alguma alteração, a matriz principal também será alterada, pois é passado para a função o endereço da matriz na memória em vez de seus valores como nas variáveis locais.

Confira na imagem abaixo um exemplo de utilização de matrizes, no programa abaixo foi pedido para preencher uma matriz 3x3 para que o programa mostre quantas vezes e em quais posições um determinado número aparece.



O programa acima está simples de compreender, qualquer dúvida deixe um comentário abaixo.

>> Próxima aula, em breve.

12 maio 2018


Entenda o que são tokens na plataforma do Ethereum. O canal Savjee no Youtube, fez um excelente vídeo simplificado explicando, confira abaixo. Se a legenda em português não estiver disponível, você pode acompanhar nossa tradução abaixo do vídeo.

Todos nós ouvimos sobre tokens ERC20, mas o que são esses tokens e mais importante: o que eles não são?

Para começar, vamos rapidamente aprender o básico: tokens ERC20 existem na plataforma Ethereum que em si consiste em uma blockchain que é capaz de armazenar transações e uma máquina virtual que é capaz de rodar contratos inteligentes.

É importante entender que os tokens vivem na blockchain do Ethereum. Assim se beneficiam de sua tecnologia. Não são independentes e confiam na plataforma do Ethereum.

A moeda nativa na rede Ethereum é o Ether.

Mas além de Ether, a rede também pode suportar outros tokens e estes podem funcionar como moedas mas eles também podem representar ações de uma empresa, pontos de fidelidade, certificados de ouro e assim por diante ...

Vamos primeiro entender como os tokens são criados.

Um token pode ser criado por um contrato inteligente. Este contrato não é apenas responsável por criar tokens, mas também por gerenciar transações do token e manter o controle de cada token do saldo de quem possui. Para obter alguns tokens, você tem que enviar uns Ether ao contrato inteligente, que então dará você uma certa quantidade de tokens em troca. Então, quando você quiser criar seu próprio token, você escreve um contrato inteligente que pode criar tokens, transferi-los e acompanhar os saldos das pessoas. Isso parece muito fácil, mas também é bastante arriscado.

Para começar, uma vez que um contrato inteligente é implantado não pode mais ser alterado, então se você fizer um erro, você não pode consertar-lo. Isso pode ser bem catastrófico. Imagine um bug dentro do código do seu contrato que faz com que as pessoas percam seus tokens ou um bug que permitiria que outras pessoas roubassem tokens. E depois há o problema da interoperabilidade.

Cada contrato de token pode ser completamente diferente do outro. Então, se você quiser que seu token esteja disponível em uma corretora, a corretora tem que escrever um código personalizado para que eles possam conversar com seu contrato e permitir que as pessoas negociem. A mesma coisa vale para os provedores de carteira. Suportar centenas de tokens seria muito complexo e demorado. Então, em vez disso, a comunidade propôs um padrão chamado ERC20. ERC significa “Ethereum Request for Comments” e 20 é apenas o número atribuído a uma proposta que criaria alguma estrutura no velho oeste dos tokens.

O ERC20 é uma diretriz ou padrão para quando você quer criar seu próprio token, que define 6 funções obrigatórias que o seu contrato inteligente deve implementar e 3 opcionais.

Para começar, você pode, opcionalmente, dar o seu token um nome, um símbolo e você pode controlar o quão divisível é o seu token especificando quantos decimais ele suporta. As funções obrigatórias são um pouco mais complexas: você tem que criar um método que define o fornecimento total do seu token, quando esse limite é atingido, o contrato inteligente se recusará a criar novos tokens.

Em seguida vem o método "balanceOf" que retorna quantos tokens um determinado endereço possui. Então existem dois métodos de transferência: "transfer" que pega uma certa quantidade de tokens da oferta total e dá a um usuário e "transferFrom", que pode ser usado para transferir tokens entre dois usuários que os possuem. Finalmente, há o "approve" e "allowance" métodos. "Approve" verifica se seu contrato pode dar uma certa quantidade de tokens para um usuário, levando em conta a oferta total. O método "allowance" é quase o mesmo exceto que ele verifica se um usuário tem saldo suficiente para enviar uma certa quantidade de tokens para outra pessoa.

Se você sabe alguma coisa sobre programação orientada a objetos, então você pode comparar ERC20 com uma interface. Se você quiser que seu token seja um token ERC20, você tem que implementar a interface do ERC20 e isso força você a implementar esses 6 métodos.

Antes de existir o padrão ERC20, todos que queriam criar um token tinha que reinventar a roda. E isso significava que cada contrato simbólico era ligeiramente diferente e que as trocas e carteiras tinham que escrever um código personalizado para apoiar seu token. 

Com ERC20 no entanto, trocas e provedores de carteira só tem que implementar o código uma vez. É por isso que as corretoras podem adicionar novos tokens tão rapidamente e por isso que carteiras como MyEtherWallet tem suporte para todos os tokens ERC20, sem ter que ser atualizado.

Então, quão fácil seria criar o seu próprio token?

Bem, há um site chamado TokenFactory que faz isso tudo por você. Você apenas digita quanto a oferta total do seu token deve ser, como você quer chamá-lo, quantos decimais deve suportar e que símbolo que ele deveria ter. Depois de preencher tudo isso, o site cria um contrato de token para você e adiciona-o ao Blockchain da Ethereum. É super fácil e quase sem esforço. Tão sem esforço na verdade que o site Etherscan tem uma lista de 36.000 tokens ERC20 conhecidos e estima-se que em 2017 mais de 4 bilhões dólares foi levantado pela venda de tokens em ICO.

No entanto, esses tokens nem sempre são limpos. Alguns foram realmente exagerados e muitas pessoas foram enganadas ao comprar tokens essencialmente sem valor.

O ERC20 é um ótimo padrão que impulsionou o uso de tokens. Mas o ERC20 em si não é perfeito. É apenas uma diretriz e as pessoas são livres para implementar as funções necessárias que elas gostam. Isso levou a alguns problemas interessantes.

Por exemplo: para comprar alguns tokens você tem que enviar alguns ether para o contrato do token. Mas algumas pessoas tentaram enviar outros ERC20 tokens em vez disso. Se o contrato não foi projetado com isto em mente, isso resultará na perda dos seus tokens. De fato, estimava-se que até dezembro 2017 mais de 3 milhões de dólares foram perdido por causa dessa falha. 

Então, para resolver isso, a comunidade já está trabalhando em estender o padrão ERC20 com o padrão ERC223. Isso avisa os criadores de tokens sobre esses riscos e oferece algumas soluções alternativas.

Saiba mais sobre criptomoedas clicando aqui.

10 maio 2018

Este artigo faz parte do projeto #LTCode.

Nesta aula aprenderemos sobre constantes, elas são uteis para que fique fácil fazer uma alteração de algum valor que está presente em várias partes do código.

Uma constante deve ser definida fora de qualquer função, portanto geralmente é declarada após qualquer #include .

Existem duas maneira de declarar uma constante em C:

const tipo simbolo = valor;

Exemplo: const int X = 2;

No exemplo acima, const é uma palavra reservada ou seja faz parte da linguagem C, foi então armazenado em algum lugar da memória o valor 2 do tipo inteiro, então em qualquer parte do código que tiver o simbolo X, ele apontará para a posição na memória que contém o valor 2 armazenado.

#define simbolo valor

Exemplo: #define X 2

No exemplo acima, #define é uma expressão que indica ao processador que onde quer que tenha o símbolo X seja substituído pelo valor 2 no momento em que o programa for compilado. Por não ser uma palavra reservada em C, não se utiliza ponto-e-vírgula ao final da expressão. É comum que muitos programadores escrevam os símbolo em maiúsculo, embora não seja regra.

A imagem abaixo resumi a aula de hoje. O programa receba o gabarito de uma prova de 5 questões e pode conferir a resposta de no máximo 100 alunos. Confira as linhas 2, 3, 41, 42 e 45.



Supondo que a próxima prova tenha 10 questões em vez de 5, então basta alterar o valor na linha 2 para que o programa funcione com uma prova que tenha dez questões.

>> Próxima aula, clique aqui. 

07 maio 2018


Este artigo faz parte do projeto #LTCode.

Hoje nós aprenderemos sobre vetores, se você tiver lido a aula 1.13 você já deve ter uma ideia do que são vetores. Se não, não se preocupe pois aprenderemos o que precisamos saber sobre vetores abaixo.

Vetores são também conhecidos como arranjos ou arrays. Resumindo, vetores são variáveis que recebem dados diferentes mas do mesmo tipo. Por exemplo, se eu lhe pedir para criar um programa que receba a nota de 10 alunos, se você não conhece vetores provavelmente vai criar 10 variáveis diferentes para cada aluno (aluno 1, aluno 2 ... aluno 10). Mas se você conhece vetores, você vai criar uma variável chamada aluno que recebe 10 dados diferentes, no caso esses dados são as notas dos alunos.

Sem aprender vetor:
int aluno1, aluno2, aluno3, aluno4, aluno5, aluno6, aluno7, aluno8, aluno9, aluno10;

Depois de aprender vetor:
int aluno[10];

Usar vetores torna seu código bem menor e mais simples. Bom, os elementos dos vetores são acessados por indexação começando de zero, portanto vamos atribuir notas para cada aluno:

aluno 1 tirou nota 5
aluno 2 tirou nota 9
aluno 3 tirou nota 8
aluno 4 tirou nota 1
aluno 5 tirou nota 0
aluno 6 tirou nota 5
aluno 7 tirou nota 9
aluno 8 tirou nota 7
aluno 9 tirou nota 4
aluno 10 tirou nota 3

Confira agora como fica dentro do vetor aluno[10] as notas atribuídas:

aluno[0] = 5
aluno[1] = 9
aluno[2] = 8
aluno[3] = 1
aluno[4] = 0
aluno[5] = 5
aluno[6] = 9
aluno[7] = 7
aluno[8] = 4
aluno[9] = 3

Note que como a indexação começa de zero, todo vetor será sempre vetor[n-1].

Para preencher um vetor é muito simples, confira os exemplos:


Como você pode ver na imagem acima vetor a[4] recebeu os valores 0,1,2 e 3. O vetor b[] não possui um número de posições para preencher, mas logo é preenchido com 3 posições ao receber os valores 1,2 e 3, se não fosse preenchido iria dar erro de compilação. O vetor vetor[10] ainda não foi inicializado e o vetor c[2] recebeu 2 caracteres, note que quando for preencher um vetor com um caractere é necessário adicionar aspas simples. Note também que para imprimir o vetor a[4] por exemplo, foi utilizado a variável i para contar de 0 até 4, como 4 não é menor que 4 então para de imprimir.

A leitura e impressão de dados de um vetor é semelhante a de uma variável, como você pode notar na linha 7 e 12 da imagem acima. Exemplos:

Recebendo valor na posição 2 de um vetor a[4]:
scanf("%d",&a[2]);
Imprimindo valor presente na posição 2 de um vetor a[4]:
printf("%d",a[2]);

Vale notar algumas informações importante sobre vetores:
- os valores de um vetor[] declarado sem posições, suas posições contém valores aleatórios ou seja, lixo de memória.
- se o número de posições declarada for menor que o número de valores presentes no vetor, os elementos em falta são preenchido com valor zero.

Vetores também funcionam com funções, antes de prosseguir é altamente recomendado que tenha lido a aula 2.8 sobre funções, portanto se ainda não leu clique aqui. Seu uso em funções é semelhante a de qualquer variável. Confira um exemplo abaixo:




Como podem notar nas linha 8 e 2 possui duas funções, elas são chamadas respectivamente nas linhas 17 e 19. Vale notar que em lista de parâmetros da função deve se colocar os [ ] colchetes do vetor mas não precisa de indicar o número de posições do vetor como você pode notar por exemplo na linha 2, e para chamar a função escreva somente o nome do vetor. Isso acontece pois a função recebe na verdade a posição do vetor na memória e não os valores dele, por conta disso se você alterar algum valor do vetor, você vai alterar o valor presente no vetor declarado na função main.

Por hoje é isso, continue estudando conosco e até a próxima.

>> Próxima aula, clique aqui. 

05 maio 2018


Mais uma nova mensagem é capaz de travar o Whatsapp em aparelhos Android, mas diferentemente daquela mensagem de 2014, esta nova não causa muitos problemas.

A mensagem de travar o aparelho foi espalhada de diversas formas, como "don't-touch-here" para usuários americanos ou "aperte-no-esquilo" para os brasileiros, além de outras variantes. Mas o interessante é que ao clicar na mensagem, o app simplesmente trava e dependendo de alguns aparelhos pode travar até o sistema - basta reiniciar o aparelho para voltar ao normal.

Isso acontece pois a mensagem possui caracteres ocultos que quando clicado o app tenta interpretar esses caracteres mas acaba travando no processo devido ao grande número de caracteres. Confira abaixo uma comparação com uma mensagem com espaço em branco e a mensagem que trava com caracteres ocultos:




Como podem notar, é visível a enorme quantidade de caracteres ocultos ao converter a mensagem para código ASCII.

Felizmente estes caracteres não são maliciosos, então se você recebeu essa mensagem apenas ignore e não clique para evitar de travar seu aparelho. Caso clicar, apenas reinicie o aparelho... o problema não é persistente ou seja só vai travar se você clicar na mensagem novamente.

Está interessado no código para travar o WhatsApp dos seus amigos?

Disponibilizarei o código no formato ASCII abaixo, se não carregar clique aqui, portanto copie o código e converta de ASCII para texto usando algum site como este aqui e depois mande para seus amigos.

Mas atenção, não nos responsabilizamos pelos seus atos.

Se você atualizou seu Ubuntu e após reiniciar o sistema não sai da tela com a seguinte mensagem: "[ok] Started GNOME Display Manager. Dispatcher Service......ance-master).n." como ilustra a imagem acima. É muito provável que ocorreu algum bug com o driver de vídeo.

Portanto se você usa por exemplo uma placa de vídeo nvidia, é necessário desinstalar o driver dela para que o sistema seja carregado normalmente.

Mas como desinstalar o driver sendo que o sistema não carrega? É simples, quando aparecer a tela da imagem acima, aperte a tecla alt mais a tecla f2, vai abrir uma outra tela e nela solicitará que você faça login no sistema. Então faça login com sua conta que tenha privilégios de desinstalar programas e digite o seguinte comando para remover os drivers, no caso, da nvidia:"sudo apt-get purge nvidia-*" (sem aspas) e em seguida reinicie com o comando reboot.

Se você não conseguir com o tutorial acima, tente o seguinte:

1- na tela do GRUB, o menu de boot, aperte a tecla E e então adicione o seguinte código "nouveau.modeset=0" (sem aspas) ao final da linha e depois aperte F10 para iniciar o sistema.
2- em seguida, provavelmente você vai cair na mesma tela da imagem acima novamente, então aperte a tecla alt mais a tecla f2 ou f3 ou f4 ou f5, vai abrir uma outra tela e nela solicitará que você faça login no sistema. Então faça login com sua conta que tenha privilégios de desinstalar programas e digite o seguinte comando para remover os drivers, no caso, da nvidia: sudo apt-get purge nvidia-*
3- Feito isso, reinicie com o comando reboot.

03 maio 2018


Xerosploit é uma ferramenta que te auxilia em ataques mitm (man-in-the-middle / homem-do-meio). Ela possui muitos módulos para realizar ataques eficientes. No vídeo abaixo é demonstrado sua instalação e utilização dos módulos, confira:

Github da ferramenta: https://github.com/LionSec/xerosploit

Módulos disponíveis:
  • Port scanning
  • Network mapping
  • Dos attack
  • Html code injection
  • Javascript code injection
  • Interceptar e substituir arquivos de download
  • Sniffing
  • Dns spoofing
  • Tocar som em sites escondido
  • Substituir imagens
  • Drifnet (ver imagens visualizadas pela vítima)
  • Webpage deface e mais
Saiba mais sobre o downgrade de https para http clicando aqui.

*Para saber como rodar Kali Linux em máquina virtual junto com seu Windows como no vídeo acima, clique aqui e confira nossa playlist hacker.
Este artigo faz parte do projeto #LTCode

Faremos hoje exercícios para fixar o aprendizado de funções! Depois de ter feito compare com os nossos programas/respostas abaixo.

1- Criar uma função que determine se um caractere, recebido como parâmetro, é ou não uma letra do alfabeto. A função deve retornar 1 caso positivo e 0 em caso contrário. Escreva também um programa para testar tal função.

2- Escreva uma função que receba 3 números inteiros e retorne o maior deles. Crie também um programa para testar tal função.

3- Crie uma função que receba três números inteiros como parâmetros, representando horas, minutos e segundos, e os converta em segundos, retornando o resultado. Exemplo: 2 h, 40 min e 10 s correspondem a 9.610 segundos.

4- Crie uma função que receba como parâmetro a altura (float) e o sexo (char) de uma pessoa e retorne o seu peso ideal. Para homens, deverá calcular o peso ideal usando a fórmula: peso ideal = 72,7 * altura - 58; para mulheres: peso ideal = 62,1 * altura - 44,7 .

5- Escreva a função x_isdigit, que verifica se um determinado caractere x recebido como parâmetro é dígito ou não, retornando 0 ou 1. Escreva um programa de teste da função. Observação: um caractere é dígito se ele está entre '0' e '9'.

6- Escreva uma função que receba como parâmetro um número inteiro maior ou igual a zero e retorne o valor do seu fatorial. Faça também um programa para testar tal função.

Respostas abaixo: (se não carregar abaixo, clique aqui).
*Note que a resolução dos exercícios estão juntas no mesmo arquivo, portanto para rodar copie os códigos separadamente e salve cada um como numero-do-exercicio.c



>> Próxima aula, clique aqui. 








Please Donate To Bitcoin Address: [[address]]





Donation of [[value]] BTC Received. Thank You.


[[error]]