sexta-feira, 29 de junho de 2018

Programa verificador e contador de números pares e ímpares em C

#include<stdio.h>
main ()
{
  int par, impar, num;
  par = 0;
  impar = 0;
  printf("\n Informe o numero: ");
  scanf("%d",&num);
  while (num != 0)
  {
    if (num % 2 == 0)
      par++;
    else
      impar++;
    printf ("\n Informe o numero:");
    scanf("%d",&num);
  }
  printf ("\n A quantidade de par e : %d", par);
  printf ("\n A quantidade de impar e : %d", impar);
  return (0);
}

Exemplo utilizando DO WHILE:

#include <stdio.h>
main ()
{
  int par, impar, num;
  par = 0;
  impar = 0;
  do
  {
    printf ("\n Informe o numero:");
    scanf ("%d", &num);
    if (num % 2 == 0)
      par++;
    else
      impar++;
  }
  while (num != 0);
  printf ("\n A quantidade de par e : %d", par);
  printf ("\n A quantidade de impar e : %d", impar);
  return (0);
}
Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

quinta-feira, 28 de junho de 2018

Estrutura DO WHILE em C

A estrutura do while é uma estrutura do tipo laço condicional, isto é, o loop baseia-se na análise de um condição.
Essa estrutura é utilizada quando temos um número indefinido de repetições e precisamos que o teste condicional seja realizado após a execução do trecho de código. Nesse tipo de estrutura, o trecho de código é executado pelo menos uma vez, pois o teste condicional é realizado no fim (ASCENCIO; CAMPOS, 2010).
A sintaxe dessa estrutura é dada por:

do
{
  <instruções>;
}
while (condição);

A diferença entre a estrutura while e do while é o momento em que o teste condicional é analisado. Exemplo:

#include <stdio.h>
main ()
{
  char nome[30];
  int i;
  printf("\n Informe o nome:");
  scanf("%s",nome);
  i = 0;
  do
  {
    printf("\n %d - %s", i, nome);
    i++;
  }
  while (i != 10);
  return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Estrutura WHILE em C

A estrutura while é uma estrutura do tipo laço condicional, isto é, o loop baseia-se na análise de uma condição. Essa estrutura é utilizada quando temos um número indefinido de repetições e se caracteriza por realizar um teste condicional no início.
Como o teste condicional é executado no início, podem ocorrer casos em que as instruções da estrutura de repetição nunca sejam executadas. Isso acontece quando o teste condicional da estrutura resulta em falso logo na primeira compraração (ASCENCIO; CAMPOS, 2010).

A sintaxe da estrutura while é:

while (condição)
{
  <instrução>;
}

Os comandos delimitados pelas chaves são executados enquanto a condição for verdadeira. Exemplo:

#include <stdio.h>
main ()
{
  char nome[30];
  int i;
  printf("\n Informe o nome:");
  scanf("%s",nome);
  i = 0;
  while (i != 10)
  {
    printf("\n %d - %s", i, nome);
    i++;
  }
  return (0);
}
Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

quarta-feira, 27 de junho de 2018

Estrutura FOR em C

É uma estrutura do tipo laço contado, isto é, utilizada para um número definido de repetições. Devemos utilizar essa estrutura quando sabemos previamente o número de vezes que o trecho de código precisa ser repetido. A sintaxe desta estrutura é:

for ( i= valor inicial; condição; incremento ou decremento de i)
{
    <instruções>;
}

Exemplo de programa C com uso do FOR

/* Imprime o nome 10x */
#include <stdio.h>
main ()
{
    char nome[30];
    int i;
    printf("\n Informe o nome:");
    scanf("%s",nome);
    for (i=1; i<=10; i++)
    {
        printf("\n %s",nome);
    }
    return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Programa que informa a quantidade total de calorias a partir da escolha do prato típico em C

Prato                              Bebida
Italiano 750 cal             Chá 30 cal
Japonês 324 cal             Suco de laranja 80 cal
Savadorenho 545 cal     Refrigerante 90 cal

#include <stdio.h>
main ()
{
    int op;
    float total;
    total = 0;
    printf ("\n 1 - Italiano 2 - Japones 3 - Salvadorenho");
    printf("\n Informe o prato desejado");
    scanf("%d",&op);
    switch (op)
    {
        case 1 : total = total + 750;
            break;
        case 2 : total = total + 324;
            break;
        case 3 : total = total + 545;
            break;
    }

    printf("\n 1 - Cha 2 - Suco de laranja 3 - Refrigerante:");
    printf("\n Informe a bebida desejada:");
    scanf("%d",&op);
    switch (op)
    {
        case 1 : total = total + 30;
            break;
        case 2 : total = total + 80;
            break;
        case 3 : total = total + 90;
            break;
    }
    printf ("\n O total de calorias e : %.2f",total);
    return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Programa que recebe altura e sexo e calcula o peso ideal em C

Para homens        (72.7 x altura)-58
Para mulheres    (62.1 x altura)-44.7

#include <stdio.h>
main ()
{
    float altura, peso;
    char sexo;
    printf("\n Informe o sexo (M/F):");
    scanf("%c",&sexo);
    printf("\n Informe a altura:");
    scanf("%f",&altura);
    if ((sexo=='F') || (sexo=='f'))
    {
        peso= (62.1 * altura) - 44.7;
    }
    else
    {
        peso= (72.7 * altura) - 58;
    }
    printf ("\n O sexo e: %c", sexo);
    printf ("\n A altura e: %.2f", altura);
    printf ("\n O peso ideal e: %.2f", peso);
    return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Programa que recebe a idade e identifica sua classe eleitoral em C

#include <stdio.h>
main ()
{
    int idade;
    printf("\n Informe a idade:");
    scanf ("%d",idade);
    if (idade < 16)
    {
        printf("Nao eleitor");
    }
    else
    {
        if ((idade < 18) || (idade > 65))
        {
            printf("Eleitor facultativo");
        }
        else
        {
            printf("Eleitor obrigatorio");
        }
    }
    return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Programa que recebe nome, idade e mostra a mensalidade do plano de saúde em C


Até 18 anos         R$ 50,00
De 19 a 29 anos     R$ 70,00
De 30 a 45 anos        R$ 90,00
De 46 a 65 anos        R$ 130,00
Acima de 65 anos    R$ 170,00

#include <stdio.h>
main ()
{
    char nome[30];
    int idade;
    printf (" Informe o nome: ");
    scanf("%s", nome);
    printf("\n Informe a idade: ");
    scanf ("%d",&idade);
    if (idade <= 18) {
        printf ("\n Nome %s :",nome);
        printf ("\n Idade %d:",idade);
        printf ("\n O valor do plano e: R$ 500,00");
    }
    else
    {
        if ((idade >= 19) && (idade <=29))
        {
            printf ("\n Nome %s :",nome);
            printf("\n Idade %d:",idade);
            printf("\n O valor do plano e: R$ 90,00")/
        }
        else
        {
            if ((idade >= 30) && (idade <= 45))
            {
                printf ("\n Nome %s :",nome);
                printf ("\n Idade %d:",idade);
                printf ("\n O valor do plano e: R$ 90,00");
            }
            else
            {
                if ((idade := 46) && (idade <= 65))
                {
                    printf ("\n Nome %s :",nome);
                    printf ("\n Idade %d",idade);
                    printf("\n O valor do plano e: R$ 130,00");
                }
                else
                {
                    printf("\n Nome %s :",nome);
                    printf("\n Idade %d:",idade);
                    printf("\n O valor do plano e: R$ 170,00");
                }
            }
        }
    }
    return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Programa em C que lê um número e informa se é divisível por 5

#include <stdio.h>
main ()
{
    int num;
    printf(" Informe o numero: ");
    scanf ("%d",&num);
    if (num % 5 == 0)
        printf("\n O numero %d e divisivel por 5", num);
    else
        printf("\n O numero %d nao e divisivel por 5", num);
    return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Estrutura case em C

A estrutura casse consiste em uma generalização do if, em que somente uma condição era avaliada e dois caminhos poderiam ser seguidos, um para o resultado da avaliação ser verdadeiro e outro para falso.
Na estrutura case pode haver uma ou mais condições a serem avaliadas e um comando diferente associado a cada uma delas, isto é, é uma construção de múltiplas possibilidades de decisão que compara o resultado de uma expressão com uma série de valores constantes(LOPES; GARCIA, 2002).

A estrutura case é utilizada quando temos situações mutuamente exclusivas, ou seja, em que se uma instrução for executada as demais não serão. Para este tipo de situação recomenda-se o uso de um comando seletivo (ASCENCIO; MOURA, 2010).

A sintaxe dessa estrutura é:

switch (<variável>)
{
case <valor 1> : <instruções>;
    break;
case <valor 2> : <instruções>;
    break;
case <valor 3> : <instruções>;
    break;
default: <instruções>;
}

Nesta estrutura, o comando switch avalia o valor da variável para decidir qual case será executado. Cada case representa um possível valor da variável, que obrigatoriamente deve ser do tipo char, unsigned char, int, unsigned int, long ou unsigned long. Para impedir a execução das instrulções definidas nos demais cases deve-se utilizar o comando break.
Se o valor da variável não coincidir com aqueles especificados nos cases são executadas as instruções do default (ASCENCIO; CAMPOS,2010)

Exemplo:
/* Estrutura case em C */
#include <stdio.h>
main()
{
    float num1, num2, resultado;
    int op;
    printf(" Digite o primeiro numero: ");
    scanf("%f",&num1);
    printf("\n Digite o segundo número: ");
    scanf("%f",&num2);
    printf("\nEscolha a operacao: \n - Soma \n 2 - Subtracao \n 3 - Multiplicacao \n 4 - Divisao \n");
    scanf ("%d",&op);
    switch (op)
    {
        case 1 : resultado = num1 + num2;
            printf (" A soma e : %.3f",resultado);
        break;
        case 2 : resultado = num1 - num2;
            printf (" A subtracao e : %.3f",resultado);
        break;
        case 3 : resultado = num1 * num2;
            printf (" A multiplicacao e : %.3f",resultado);
        break;
        case 4 : resultado = num1 / num2;
            printf ("A divisao e : %.3f",resultado);
        break;

        default : printf("\n Opcao invalida");       
    }

    return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

segunda-feira, 25 de junho de 2018

Estrutura condicional composta em C

Na estrutura condicional composta é realizada a avaliação de uma única expressão lógica. Se o resultado dessa avaliação for verdadeiro é executado a instrução ou o conjunto de instruções compreendido entre o comando entre as chaves após o if.
Se o resultado da avaliação for falso é executado a instrução ou o conjunto de instruções entre chaves após o else.

A sintaxe da estrutura condicional composta é:

if(<condição)
{
    <instruções para condição verdadeira>;
}
else
{
    <instruções para condição falsa>;
}

Exemplo:
/* Estrutura condicional composta em C */
#include <stdio.h>
#include <math.h>
main ()
{
    int quadrado, num;
    float raiz;
    printf(" Digite um numero inteiro: ");
    scanf("%d",&num);
    if (num % 2 -- 0)
    {
        raiz = sqrt(num);
        printf("O numero e par");
        printf("\nA raiz quadrada e: %.3f, raiz");
    }
    else
    {
        quadrado = num * num;
        printf ("O  numero e impar");
        printf("\nO numero ao quadrado e: %d",quadrado);
    }
    return(0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Estrutura condicional simples em C

#include <stdio.h>
#include <math.h>

main()
{
    int num;
    float raiz;
    printf("Digite um numero inteiro: ");
    scanf("%d",&num);
    if(num % 2 == 0)
    {
        raiz = sqrt(num);
        printf("A raiz quadrada e: %.3f", raiz);
    }
    return(0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Programa que calcula a área de um trapézio em C

#include <stdio.h>
main ()
{
    float base1, base2, altura, area;
    printf(" Informe o valor da base maior: ");
    scanf("%f",&base1);
    printf("\n Informe o valor da base menor: ");
    scanf("%f",&base2);
    printf("\n Informe o valor da altura: ");
    scanf("%f",&altura);
    area = ((base1+base2)*altura)/2;
    printf("\n A area do trapezio e: %.2f",area);
    return(0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Programa que recebe dois números, calcula e apresenta um elevado ao outro em C

#include <stdio.h>
#include <math.h>
main()
{
    float num1, num2, total;
    printf(" Informe o primeiro numero: ");
    scanf("%f",&num1);
    printf("\n Informe o segundo numero: ");
    scanf("%f",&num2);
    total = pow(num1, num2);
    printf("\n %.2f elevado a %.2f e: %.2f", num1, num2, total);
    return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Programa que recebe o valor de um depósito e o valor da taxa de juros e calcula o valor do rendimento e o valor total em C

#include <stdio.h>
main ()
{
    float deposito, taxa, rendimento, total;
    printf(" Informe o valor do deposito: ");
    scanf("%f",&deposito);
    printf("\n Informe a taxa de juros: ");
    scanf("%f",&taxa);
    rendimento = deposito * (taxa/100);
    total = deposito + rendimento;
    printf("\n O rendimento e: %.2f", rendimento);
    printf("\n O total e: %.2f", total);
    return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Programa que recebe quatro notas e calcula a média aritmética em C

#include <stdio.h>
main()
{
    float n1, n2, n3, n4, media;
    printf(" Digite a nota 1: ");
    scanf ("%f",&n1);
    printf(" Digite a nota 2: ");
    scanf("%f",&n2);
    printf(" Digite a nota 3: ");
    scanf("%f",&n3);
    printf(" Digite a nota 4: ");
    scanf("%f",&n4);
    media = (n1 + n2 + n3 + n4)/4;
    printf(" A media e: %.2f",media);
    return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Programa que apresente seu antecessor e seu sucessor em C

#include <stdio.h>
main()
{
    int num, ant, suc;
    printf(" Digite o numero: ");
    scanf("%d", &num);
    ant = num - 1;
    suc = num + 1;
    printf("\n O antecessor e: %d", ant);
    printf("\n O sucessor e: %d", suc);
    return (0);
}

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Estrutura de um programa básico em C


Vamos elaborar um programa que leia nome, idade e altura de uma pessoa e exiba esses dados.

#include <stdio.h>
main()
{
    int idade, ano;
    float altura;
    char nome[30];

    printf("Digite o seu nome: ");
    scanf ("%s", nome);
    printf("Digite a idade: ");
    scanf("%d", &idade);
    printf("Digite a altura: ");
    scanf("%f", &altura);

    ano = 2018 - idade;

    printf("\nO nome e: %s", nome);
    printf("\nA altura e: %f", altura);
    printf("\nA idade e: %d", idade);
    printf("\nO ano de nascimento e: %d", ano);
    return (0);
}
Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Saída de dados em C

A saída de dados permite mostrar dados aos usuários. Na linguagem C utilizamos a função printf para exibir resultados do processamento e mensagens. A sintaxe desta função é:

printf("expressão de controle", lista de argumentos);

O argumento "expressão de controle" pode conter mensagens que serão exibidas na tela e os especificadores de formato que indicam o formato que os argumentos devem ser impressos. A lista de argumentos pode conter identificadores de variáveis, expressões aritméticas ou lógicas e valores constantes.

Além dos especificadores de formato podemos utilizar códigos especiais na saída de dados.

Código     Significado
\n         Nova linha
\t         Tab
\b         Retrocesso
\"        Aspas
\\         Contrabarra
\f         Salta página de formulário
\0         Nulo

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

domingo, 24 de junho de 2018

Funções Intrínsecas em C

As funções intrínsecas são fórmulas matemáticas prontas que podemos utilizar em nossos programas.

ceil(x)            Arredonda um número real para cima. Por exemplo, cel(2.3) é 3.
cos(x)            Retorna o cosseno de x.
exp(x)            Obtém o logaritmo natural E elevado à potência x.
abs(x)            Retorna o valor absoluto de x.
floor(x)        Arredonda um número real para baixo. Por exemplo, floor(2.3) é 2.
log(x)            Retorna o logaritmo natural de x.
log10(x)        Retorna o logaritmo de base 10 de x.
z=modf(x,&y)    Decompõe o número real armazenado em x em duas partes.
pow(x,y)        Calcula a potência de x elevado a y.
sin(x)            Calcula o seno de x.
sqrt(x)            Calcula a raiz quadrada de x.
tan(x)            Calcula a tangente de x.
M_PI            Retorna o valor de Pi.

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

Linguagem C | Definição

A linguagem C foi concebidae implementada, inicialmente, para o sistema operacional Unix, na década de 70 por Dennis Ritchie nos Laboratórios Bell da companhia AT & T (KERNINGHAN; RITCHIE, 1988).
C é uma linguagem de programação de propósito geral, com uma sintaxe muito compacta e que permite a combinação de operadores de diferentes tipos.
Além disso, não está vinculada a um hardware específico ou qualquer outro sistema. De modo que é fácil escrever programas, que serão sem mudanças em qualquer máquina que suporta C (KERNINGHAN; RITCHIE, 1988).

Segundo Rocha(2006), a principal característica da linguagem C é que ela combina as vantagens de uma linguagem de alto nível com a eficiência da linguagem de montagem assembly. EM C é possível realizar operações aritméticas sobre ponteiros e operações sobre palavras binárias.

Podemos dizer que esta liberdade oferecida pela linguagem C é uma faca de dois gumes, pois ao passo que permite com que programadores experientes escrevam códimos mais compactos e eficientes, possibilita que programadores inexperientes realizam construções sem sentido, as quais são aceitas como válidas pelo compilador.
Deste modo, ao construir programas utilizando C devemos ficar atento às construlções da linguagem (ROCHA, 2006).

Ascencio e Campos (2010) destacam que durante alguns anos, o padrão da linguagem C foi fornecido com a versão do sistema operacional UNIX. No entanto, com a popularização dos microcomputadores foram criadas várias implementações da linguagem C o que ocasionou várias discrepâncias.
Em 1983, o ANSI (American National Standards Institute) criou um comitê para definir um padrão que guiasse todas as implementações da linguagem C.

Fonte: Algoritmos e Lógica de Programação II, ME. Gislaine Camila Lapasini Leal, Unicesumar.

O laço while em C

O segundo comando de laço em C é o while (que significa enquanto). À primeira vista, o laço while parece simples se comparado ao laço for; ele utiliza os mesmos elementos, mas estes são distribuídos de maneira diferente no programa.
Utilizamos o laço while quando o laço pode ser terminado inesperadamente, por condiçõpes desenvolvidas dentro do corpo do laço.
Exemplo:

/* Contachar.C */
/* Conta caracteres de uma frase */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> /* Para getche() */
int main()
{
    int cont=0; /* Contador */

    while(getche() != '\r') /* Enquanto não [Enter] */
        cont++; /* Corpo do laço */
    /* Fora do laço */
    printf("\nO número de caracteres é %d\n", cont);

    system("PAUSE");
    return 0;
}

O programa aguarada a digitação de uma frase. Cada caractere digitado é contado e acumulado na variável cont até que a tecla [ENTER] seja pressionada.
O programa imprime o total de caracteres da frase.
O laço while termina quando a tecla [ENTER]  pressionada. Nesse caso, não conhecemos de antemão o número de interações que serão executadas. Em situações semelhantes, o laço while é mais apropriado que o laço for.

Sintaxe do laço while

Inicialização;

while (teste)
{
    Incremento;
}

Exemplo:

/* WhileDemo.C */
/* Mostra um uso simples do laço while no lugar de um laço for */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i=0; /* Inicialização */
    while(i < 20) /* Teste */
    {
        printf("%c", '*');
        i++;
    }
    printf("PAUSE");
    return 0;
}

Em situações em que o número de iterações é conhecido, como no programa, o laço for é a escolha mais natural.
Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

Programa em C que imprime um cartão de Natal

/* Natal.C */
/* Imprime uma árvore de Natal */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> /* Para getche() */
int main()
{
    char sd, se;
    int i,k,j;
    system("cls");/* Limpa tela */
    printf("\nSinal interno direito: ");
    sd= getche();/* Caractere de desenho da árvore */
    printf("\nSinal interno esquerdo: ");
    se= getche();/* Caractere de desenho da árvore */

    printf("\n\n");/* Pula 2 linhas antes do início do desenho */

    for(i=0; i<4; i++)
    {
        for(k=1; k<5; k++)
        {
            for(j=1;j<=40-(2*i+k);j++)
                printf(" ");/* Imprime brancos */
                printf("/");/* Delimitador inicial da linha */
                for(j=1;j<(2*i+k);j++)
                    printf("%c",se);/* Até o meio */
                for(j=1;j<(2*i+k);j++)
                    printf("%c",sd);/* Meio ao fim */
                printf("\\\n"); /* Delimitador final da linha */
        }
    }
    /* Desenha o pé da árvore */
    for(i=0;i<2;i++)
    {
        for(j=0;j<38;j++) printf(" ");
            printf("| |\n");
    }
    printf("\n");;
    /* Imprime mensagem centralizada */
    for(j=0;j<35;j++) printf(" ");
    printf("FELIZ NATAL\n");
    for(j=0;j<31;j++) printf(" ");
    printf("E UM PRÓSPERO 2018!\n");
    system("PAUSE");
    return 0;
}

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

Laços for aninhados em C

Quando um laço for faz parte do corpo de outro laço for, dizemos que o laço interno está alinhado.
Exemplo:

/* Tabuada.C */
/* Imprime as tabuadas do 2 ao 9 */
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j,k;
    system("cls");/* Limpa a tela */

    for(k=0; k<=1; k++)
    {
        printf("\n");
        for(i=1; i<=4; i++)
            printf("TABUADA DO %3d ", i+4*k+1);
        printf("\n");

        for(i = 1; i<=9; i++)
        {
            for(j=2+4*k; j<= 5+4*k; j++)
                printf("%3d x%3d = %3d  ", j,i,j*1);
            printf("\n");
        }
    }
    system("PAUSE");
    return 0;
}

O laço for mais externo (da variável k) é executado duas vezes: uma para imprimir o primeiro bloco de tabuadas (de 2 a 5); e outra, para imprimir o segundo bloco (de 6 a 9).
O segundo laço for imprime os títulos. Os dois laços mais internos imprimem as tabuadas propriamente ditas.

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

Criando blocos dentro de blocos em C

Em todo lugar onde é possível colocar uma instrução C, é também possível inserir um bloco de código. Por exemplo:

/* Bloco.C */
/* Mostra o uso de um bloco dentro de outro bloco */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i=5;
    {/* Início do bloco */
        int i=150;
        printf("%d\n", i); /* Imprime 150 */

    }/* Fim do bloco */

    printf("%d\n", i); /* Imprime 5 */

    system("PAUSE");
    return 0;
}

Observe a variável i do bloco interno no programa bloco.c. Essa é uma nova variável com o mesmo nome da variável criada no bloco da função main(). Ela é criada quando o bloco inicia sua execução e é destruída quando o bloco termina.
Assim, a instrução após o fim do bloco utiliza a variável i do bloco de main(), pois a outra não mais existe.

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

Múltiplas instruções no corpo de um laço for em C

Se um laço for deve executar várias instruções a cada iteração, elas precisam estar entre chaves.

Sintaxe:

for(i=0; i<10; i++)
{
    instrução;
    instrução;
    instrução;
}

Em C, um bloco de código é uma série de instruções entre chaves e é tratado como um grupo de instruções numa única unidade. Isso significa que um bloco de código é tratado como sendo ele mesmo uma única instrução.
Veja um exemplo:

/* MEDIA.C
 * Imprime a média aritmética de 10 notas */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    float soma = 0.0;
    const int max = 10;
    int i;

    for(i=0; i < max; i++)
    {
        float nota;
        printf("\nDigite a nota %d: ", i+1);
        scanf("%f", &nota);
        soma += nota;
    }
    printf("\nMédia = %.2f\n", soma/max);

    system("PAUSE");
    return 0;
}

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

Omitindo o corpo do laço for em C

for(;(ch=getch())!= 'X';printf("%c", ch+1))
        ;

Outro  exemplo:

for(i=0; i<=1000; i=i+1)
        ;

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

sábado, 23 de junho de 2018

Laço for infinito em C


Um laço infinito é aquele que é executado sempre, sem parar. Ele sempre tem a expressão de teste verdadeira, e um modo de parar sua execução é desligando o computador.

for (;;)
    printf("Laço Infinito");

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

Omitindo expressões do laço for em C

Qualquer uma das três expressões de um laço for pode ser omitida, embora os ponto-e-vírgulas devam permanecer.
Se a expressão de inicialização ou a de incremento for omitida, será simplesmente desconsiderada. Se a condição de teste não estiver presente, serã considerada permanentemente verdadeira.

/* Codifica a entrada digitada */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> /* Para getch() */
int main()
{
    unsigned char ch;
    for(; (ch-getch()) != 'X';)
        printf("%c", ch +1);

    printf("\n");
    system("PAUSE");
    return 0;
}

Note que colocamos parênteses extras envolvendo a expressão de atribuição (ch = getch()). Esses parênteses são realmente necessários, pois a precedência de != é maior que a de =; isso significa que, na falta dos parênteses, o teste relaciona != será feito antes da atribuição e a expressão será equivalente a:

ch = (getch() != 'X')

e ch terá um valor de 0 ou 1.

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

Usando chamadas de Funções nos parâmetros for em C

É possível chamar funções de dentro de expressões do laço for.


/* Codifica a entrada digitada */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> /* Para getch() */
int main()
{
    unsigned char ch;
    for(ch=getch(); ch != 'X'; ch = getch())
        printf("%c", ch +1);
    printf("PAUSE");
    return 0;
}

Esse programa lê caractere a caractere do teclado e imprime o caractere seguinte da tabela ASCII.

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar  

Usando caracteres no laço for em C

 /* Mostra o uso de uma variãvel do tipo char para controle do laço */
 * Imprime as letras minúsculas e seus correspondentes valroes
 * em decimal na tabela ASCII */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char ch;
    for(ch='a';ch<='z';ch++)
        printf("\nO valor ASCII de %c é %d",ch,ch);

    printf("\n");
    system("PAUSE");
    return 0;
}

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

O operador vírgula em laços for em C

Qualquer uma das expressões de um laço for pode conter vãrias instruções separadas por vírgulas.
A vírgula, nesse caso, é um operador C que significa "faça isso e depois isso". Um par de expressões separadas por vírgula é avaliado da esquerda para a direita.

/* Mostra o uso do operador vírgula no laço for */
/* Imprime os números de 0 a 98 de 2 em 2 */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,j;
    for(i=0, j=i; (i+j) < 100; i++, j++)
        printf("%d",i+j);

    printf("\n");
    system("PAUSE");
    return 0;
}

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

Exemplos laços for | C

/* Tabuada6.c */
/* Imprime a tabuada do 6 */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i;
    for(i=1;i<10;i++)
        printf("\n%4d x 6 = %4d",i,i*6)/

    printf("\n")/
    system("PAUSE");
    return 0;
}

/* Tabuada6I.c */
/* Imprime a tabuada do 6 invertida */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i;
    for(i=9;i>0;i--)
        printf("\n%4d x 6 = %4d", i, i*6)/
    printf("\n");
    system("PAUSE");
    return 0;
}

/* Multipl3.c */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i;
    for(i=3;i<=100;i+=3)
        printf("%d\t"i);
    printf("\n");
    system("PAUSE");
    return 0;
}

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

Laços em C (Introdução ao for)

Laços são comandos usados sempre que uma ou mais instruções tiverem de ser repetidas enquanto uma certa condição estiver sendo satisfeita. Em C existem três comandos de laços:

for (int i = 0; i < count; ++i)
{
    /* code */
}

while

do-while

O laço for (int i = 0; i < count; ++i)
{
    /* code */
}

O laço for é geralmente usado quando queremos repetir algo por um número fixo de vezes. Isso significa que utilizamos um laço for quando sabemos de antemão o número de vezes a repetir.

O exemplo seguinte imprime uma linha com vinte asteriscos (*) utilizando um laço for na sua forma mais simples.

/* ForDemo.c * /
/* Mostra o uso simples do laço for */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i;
    for(i=0; i<20; i++) /* Imprime 20 * */
        printf("%c",'*');
    printf("\n");
    system("PAUSE");
    return 0;
}

A saída será:

********************

Veja outro exemplo:

/* Tabuada6.c */
/* Imprime a tabuada do 6 */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i;
    for(i=1;i<10;i++)
        printf("\n%4d x 6 = %4d", i, i*6)/

    printf("\n");
    system("PAUSE");
    return 0;
}

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar

sexta-feira, 22 de junho de 2018

As funções de biblioteca-padrão getchar() e putchar () em C

A função getchar() tem protótipo definido no arquivo stdio.h, que acompanha seu compilador. Aguarda o próximo caractere da entrada padrão (teclado) e retorna o caractere lido. Essa função só termina a leitura quando a tecla [ENTER] é pressionada.

A função putchar() também tem protótipo definido no arquivo stdio.h. Imprime um caractere na saída-padrão (vídeo).

/* Mostra a função getchar() e putchar() */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char ch;
    printf("\nPressione uma tecla ");
    ch = getchar(); /* Aguarda uma tecla no teclado */
    printf("\nA tecla sucessora ASCII é ");
    putchar("ch+1");
    putchar('\n');
    system("PAUSE");
    return 0;
}

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar

O qualificador const em C

A palavra-chave const assegura que a variável associada não será alterada em todo o programa. Esse qualificador é indicado para declarar valores constantes. Veja um exemplo de seu uso:

/* Mostra o uso de const para declarar constantes */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    const char Bip = '\a'; /*Declaração de constante*/
    const double Pi = 3.141592; /*Declaração de constante */
    double raio, area;

    printf("\nDigite o raio da esfera: ");
    scanf("%lf",&raio);

    area= 4.0 * Pi * raio * raio;

    printf("%c%c", Bip, Bip);
    printf("\nArea da esfera = %.21f\n", area);
    system("PAUSE");
    return 0;
}

Obrigatoriamente, as variáveis associadas ao qualificador const devem ser inicializadas.

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar

Entrada formatada usando * com scanf() em C




/* Mostra o uso do caractere * com scanf() */
/* Digitando uma data formatada */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int dia ,mes ,ano;
    printf("Digite uma data no formato dd/mm/aaaa: ");
    scanf("%d%*c%d%*c%d", &dia, &mes, &ano);
    printf("A data que voce digitou foi: %02d/%02d/%d\n", dia, mes, ano);
    system("PAUSE");
    return 0;
}

Eis uma execução do programa:

Digite uma data no formato dd/mm/aaaa: 30/07/2005
A data que voce digitou foi: 30/07/2005


Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar 

quinta-feira, 21 de junho de 2018

Impressão formatada com printf() em C

/* Impressão formatada com printf() */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char a;
    printf("Digite um caractere e veja-o em decimal, ");
    printf(" octal e hexadecimal: ");
    scanf("%c"&a);
    printf("\nCaractere = %c\nDec\t= %d\nOct\t= %d\nHex\t= %x\n",a,a,a,a);
    system("PAUSE");
    return 0;
}

Eis uma execução do programa:

Digite um caractere e veja-o em decimal, octal e hexadecimal: A

Caractere = A
Dec = 65
Oct = 101
Hex = 41

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar

Programa que converte temperaturas em C

/* Converte temperaturas de graus Celsius para Fahrenheit */
#include <stdio.h>
#include <stdlib.h>

int main()
{
    float ftemp, ctemp;
    printf("Digite temperatura em graus Celsius: ");
    scanf("%f",&ctemp);
    ftemp = ctemp * 9/5 + 32;
    printf("\nTemperatura em graus Fahrenheit é %.2f\n", ftemp);

    system("PAUSE");
    return 0;
}

Eis um exemplo:

Digite temperatura em graus Celsius: 0
Temperatura em graus Fahrenheit é 32.00

Digite temperatura em graus Celsius: 21
Temperatura em graus Fahrenheit é 69.80

É também possível incluir expressões envolvendo operadores aritméticos (e outros operadores) diretamente em printf().

/* Converte temperaturas de graus Celsius para Fahrenheit */
#include <stdio.h>
#include <stdlib.h>

int main()
{
    float ctemp
    printf("Digite temperatura em graus Celsius: ");
    scanf("%f", &ctemp);
    printf("\nTemperatura em graus Fahrenheit é %.2f\n", ctemp * 9/5 + 32);

    system("PAUSE");
    return 0;
}

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhari

Programa que adivinha a soma de cinco números em C

/* adivinha.c */
/* Adivinha número */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int x,r;
    printf("\nDigite um número de até 4 algarismos: ");
    scanf("%d", &x);
    r = 19998 + x;
    printf("\nO resultado da soma é: %d", r);
    printf("\nDigite o segundo número: ");
    scanf("%d", &x);
    printf("\nO meu número é: %d", 9999 - x);
    printf("\nDigite o quarto número: ");
    scanf("%d", &x);
    printf("\nO meu número é: %d\n", 9999 - x);
    system("PAUSE");
    return 0;
}

Eis um exemplo de sua execução:

Digite um número de até 4 algarismos: 198
O resultado da soma é 20196
Digite o segundo número: 1234
O meu número é: 8765
Digite o quarto número: 2233
O meu número é: 7766

Observe que:

198 + 1234 + 8765 + 2233 + 7766 = 20196.

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhari 

IDE's e compiladores C


Segue abaixo compiladores C:

Dev-C++ A free, portable, fast and simple C/C++ IDE

Code::Blocks Code::Blocks is a free C, C++ and Fortran IDE built to meet the most demanding needs of its users. It is designed to be very extensible and fully configurable.

Visual Studio Use o Visual Studio 2017 para usar o Windows, Linux, Android e iOS para criar aplicativos, jogos e muito mais, aproveitando as ferramentas de depuração e produtividade líderes no mercado para fazer o trabalho rapidamente.

Netbeans  Develop professional native applications in C, C++, and Fortran for a variety of platforms including Windows, Linux, OS X, and the Solaris operating system.

Eclipse  The Eclipse C/C++ Development Tools (CDT) runs on top of the Eclipse Platform.

Múltiplas entradas com scanf() em C

Podemos ler vários valores com uma única chamada à scanf().

/* Mostra o uso de scanf() com várias entradas */
/* Calcula a média de 4 notas */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    float p1, p2, p3, p4;
    double media;
    printf("\nDigite as notas das 4 provas: ");
    scanf("%f%f%f%f",&p1, &p2, &p3, &p4);
    media = (p1 + p2 + p3 + p4)/4.0;
    printf("\nMÉDIA: %.2f\n",media);
    system("PAUSE");
    return 0;
}

Eis a saída:

Digite as notas das 4 provas: 5.5 7.5 3.0 6.0
MÉDIA: 5.50

A função scanf() entende um espaço em branco como o término de uma entrada. Múltiplas entradas são digitadas separadas por um espaço em branco. Digitamos [ENTER] como finalizador geral.

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhari

A função scanf() em C

A função scanf() é outra função de I/O (entrada e saída) presente na biblioteca-padrão, fornecida com os compiladores C. Ela é o complemento de printf() e nos permite ler dados formatados da entrada padrão (teclado).
As definições necessárias ao uso de scanf() estão no arquivo stdio.h.

Sintaxe
scanf("expressão de controle", lista de argumentos)

Códigos de formatação para scanf():

%c Caractere simples.
%d Inteiro decimal com sinal.
%i Inteiro decimal, hexadecimal ou octal.
%e Notação científica.
%f Ponto flutuante em decimal.
%g Usa %e ou %f, o que for menor.
%o Inteira octal.
%s String de caracteres.
%u Inteiro decimal sem sinal.
%x Inteiro hexadecimal.
%ld Inteiro decimal longo.
%lf Ponto flutuante longo (double).
%Lf Double longo.

Veja um exemplo:

/* Calcula a sua idade em dias */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    float anos,dias;
    printf("Digite a sua idade em anos: ");
    scanf("%f"&anos);
    dias = anos*365;
    printf("A sua idade em dias é %.0f\n",dias);
    system("PAUSE");
    return 0;
}

A execução do programa é a seguinte:

Digite sua idade em anos: 4
A sua idade em dias é 1460.

Visto que usamos variáveis do tipo float, podemos entrar com frações decimais:

Digite sua idade em anos: 12.5
A sua idade em dias é 4563.

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhari

quarta-feira, 20 de junho de 2018

O operador de endereços (&) em C

A linguagem C oferece um operador que opera sobre o nome de uma variável e resulta o seu endereço. O operador de endereços é referido pelo símbolo &.
A memória de seu computador é dividida em bytes, que são numerados de 0 até o limite de memória de sua máquina. Estes números são chamados de "endereços" de bytes.
Um endereço é a refer~encia que o computador usa para localizar variáveis.

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n;
    n=2;
    printf("Valor=%d), endereço=%p\n",n,&n);
    system("PAUSE");
    return 0;
}

Endereços de memória são impressos em hexadecimal (base16) e o formato usado é %p.
A saída deste programa varia conforme a máquina e a memória do equipamento.
Veja um exemplo:

Valor=2, endereço=0012FED4


Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhari

Caracteres Gráficos em C

/* Caracteres gráficos */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    system("cls");
    printf("\n\n");
    /* Inicia a impressão do carro */
    printf("\n\t\xDC\xDC\xDB\xDB\xDB\xDB\xDC\xDC");
    printf("\n\t\xDF0\xDF\xDF\xDF\xDF0\xDF");
    /* Fim da impressão do carro */
    printf("\n\n");

    /*Inicia a impressão da caminhonete */
    printf("\n\t\xDC\xDC\xDB \xDB\xDB\xDB\xDB\xDB\xDB");
    printf("\n\t\xDF0\xDF\xDF\xDF\xDF\xDF00\xDF");
    /* Fim da impressão da caminhonete */
    printf("\n\n");

    system("PAUSE");
    return 0;
}

/*Desenha moldura*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
    system("cls");
    printf("\n\n");
    printf("\n\t\xC9\xCD\xBB");
    printf("\n\t\xBA \xBA");
    printf("\n\t\xC8\xCD\xBC");
    printf("\n\n");
    system("PAUSE");
    return 0;
}

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhari

Escolhendo a base numérica em C

A função printf() permite-nos estabelecer a base numérica na qual desejamos ver impresso um número.

%d Imprime o campo em decimal.
%x Imprime o campo em hexadecimal.
%o Imprime o campo em octal.
%c Imprime o campo no formato caractere.

/* Definindo a base numérica */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    printf("\n%d",65);
    printf("\n%x",65);
    printf("\n%o",65);
    printf("\n%c",65);
    system("PAUSE");
    return 0;
}

A saída será:

Decimal: 65
Hexadecimal: 41
Octal: 101
Caractere: A

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhari 

Complementado com zeros à esquerda em C

Além de especificar o tamanho do campo, podemos complementar o campo todo ou parte dele com zeros à esquerda. Observe o exemplo a seguir:

/* Tamanho de campo e complementando com zeros */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    printf("\n%04d",21);
    printf("\n%06d",21);
    printf("\n%6.4d",21);
    printf("\n%6.0d",21);
    system("PAUSE");
    return 0;
}

A saída será

0021
000021
  0021
    21

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhari 

Tamanho de campo com cadeias de caracteres em C

/* Tamanho de campo com cadeias de caracteres */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    printf("\nOBJETO        %12s","CÓDIGO");
    printf("\nLápis            %12s","WQR");
    printf("\nBorrachas        %12s","ASO");
    printf("\nCanetas        %12s","KPX");
    printf("\nCadernos        %12s","FJI");
    printf("\nFitas            %12s","TYE");
    system("PAUSE");
    return 0;
}

Observação: Se o tamanho do campo especificado for menor que o tamanho mínimo necessário para imprimir o valor associado, a impressão utilizará o número necessário de colunas, ignorando o tamanho especificado para o campo.

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhari 

Tamanho de campo e justificado à esquerda em C

O sinal de menos (-) precedendo a especificação do tamanho do campo justifica os campos à esquerda, como mostra o próximo programa:

/* Tamanho de campo e justificado à esquerda */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    printf("%-10.2f %-10.2f %-10.2f\n",8.0,15.3,584.13);
    printf("%-10.2f %-10.2f %-10.2f\n",834.0,1500.55,4890.21);
    system("PAUSE");
    return 0;
}

Este formato é muito útil em certas circunstâncias, especialmente quando imprimimos cadeias de caracteres.

Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhari