Mudanças entre as edições de "AULA X - Programação 1 - Uso de IDE com o C"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(40 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 16: Linha 16:
 
*IDE é um ambiente Integrado de Desenvolvimento de Software. O IDE integra gerenciador de projeto, editor, compilador, linkers, depuradores e terminais para visualização de forma que o desenvolvedor possa ter alta produtividade no desenvolvimento;
 
*IDE é um ambiente Integrado de Desenvolvimento de Software. O IDE integra gerenciador de projeto, editor, compilador, linkers, depuradores e terminais para visualização de forma que o desenvolvedor possa ter alta produtividade no desenvolvimento;
 
*Exemplos de IDE: Netbeans, Eclipse, CLion...
 
*Exemplos de IDE: Netbeans, Eclipse, CLion...
 +
 +
 +
<blockquote style="background: #DCF4CC; border: 1px solid black; padding: 1em;">
 +
=O IDE CLion - Características e Como Instalar=
 +
</blockquote>
 +
 +
*cross-plataforma: pode ser usado em diferentes Sistemas Operacionais (ver [https://www.jetbrains.com/help/clion/2019.1/clion-quick-start-guide.html]);
 +
*suporta oficialmente o compilador gcc (além de outros). O "gcc" e a ferramenta "make" devem estar instalados.
 +
*inclui ("bundle") o GDB, um deputarador da Gnu para código C/C++;
 +
 +
Existem duas opções de instalações para a realidade IFSC SJ:
 +
*Instalar o Linux em uma Máquina Virtual e depois instalar o CLion sobre o Linux
 +
*Instalar o CLion diretamente sobre o Windows e usando as ferramentas Minimum GNU
 +
 +
Vamos começar pela última opção considerando que o hardware disponível pode ter  limitações.
 +
 +
VAMOS considerar que será instalada a VERSÃO TRIAL de 30 dias. Já foi comentado em sala que o ifsc já está cadastrado no site do CLIon então cada aluno poder aplicar para obter um código de ativação. Ver [https://www.jetbrains.com/community/education/#students Como aplicar para o CLion].
 +
 +
==Instalação sobre o Windows==
 +
 +
Consiste nos seguintes passos:
 +
*Baixar o pacote de software MinGW de [http://mingw-w64.org/doku.php versão 64 bits].
 +
*Instalar MinGW, executar e selecionar os pacotes mingw-developer-tool, mingw32-base, mingw32-gcc-g++, mingw32-msys-base. Ver detalhes em [https://www.jetbrains.com/help/clion/quick-tutorial-on-configuring-clion-on-windows.html#MinGW]
 +
*Baixar o CLion de [https://www.jetbrains.com/clion/download/download-thanks.html]. Note que o download começa de imediato. NÃO precisa aplicar neste momento para obter o funcionamento em modo trial. Para habilitação posterior deve ser usado o email do domínio IFSC
 +
*Ir na pasta Download e descompactar e executar o instalador do CLion.
 +
*Executar o CLion e configurar conforme colocado em [https://www.jetbrains.com/help/clion/quick-tutorial-on-configuring-clion-on-windows.html#MinGW]
 +
 +
<blockquote style="background: #DCF4CC; border: 1px solid black; padding: 1em;">
 +
 +
=Projeto em C com o CLion - Criação e Execução=
 +
</blockquote>
 +
 +
Criar um projeto (<New Project>)com as configurações abaixo. Notar que um projeto será por default criado dentro de
 +
uma área de projetos (Workspace). O Workspace pode ser mudado mas não recomendamos fazer isto por enquanto.
 +
 +
[[imagem:PRG-TelaProjetoCLion.jpg|650px]]
 +
 +
Na sequÊncia esta tela deve ser mostrada:
 +
 +
 +
[[imagem:PRG-TelaEdicaoCLion.jpg|650px]]
 +
 +
A execução do programa é realizada como mostrado abaixo:
 +
 +
[[imagem:PRG-TelaRun.jpg|650px]]
 +
 +
<blockquote style="background: lime; border: 1px solid black; padding: 1em;">
 +
Para mostrar linha no editor fazer: File->Settings->Editor->General->Appearance. ([https://stackoverflow.com/questions/31368195/how-do-i-show-line-numbers-in-clion-ide])
 +
</blockquote>
 +
 +
=Depuração em Alto nível=
 +
 +
A depuração em alto nível permite a execução passo a passo do programa (usando o depurado gdb).
 +
Cole o seguinte código no arquivo main.c:
 +
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
int main() {
 +
    int x,y;
 +
 +
    printf("Entre com o valor de x\n");
 +
    scanf("%d", &x);
 +
    x = x + 1;
 +
    y = x * 7;
 +
    printf("valor de x = %d\n", x);
 +
    return 0;
 +
}</syntaxhighlight>
 +
 +
Para explorar a execução passo a passo, coloque um BREAKPOINT na linha 6 (o primeiro printf) Vá até esta linha e faça CTRL-F8. Observe que a linha fica vermelha.
 +
 +
Execute conforme a tela abaixo. Em azul aparecerá a linha que SERÁ executada. Observe que no momento em que o scanf for executado, a entrada de dados é realizada em uma janela CONSOLE de apoio:
 +
 +
[[imagem:PRG-TelaDepuracao.jpg|650px]]
 +
 +
Observar que o conteúdo das variáveis podem ser inspecionados sobrepondo o mouse sobre a variável:
 +
 +
[[imagem:PRG-TelaWatchComMouse.jpg|650px]]
 +
 +
=Uso de Funções da Biblioteca Matemática=
 +
 +
Além de incluir no código fonte a diretiva:
 +
 +
#include <math.h>
 +
 +
Incluir no arquivo CMakeList.txt a linha
 +
 +
target_link_libraries(hello m)
 +
 +
Onde aparece o hello, substituir pelo nome do projeto.
 +
 +
=Exercícios=
 +
 +
Depurar os códigos abaixo:
 +
 +
<ol>
 +
<li>
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
int main() {
 +
 +
    char x;
 +
    char i;
 +
 +
    x=95;
 +
    for(i='M';i>65;i--){
 +
        if(i=='F' || i=='A')
 +
            x=x+1;
 +
    }
 +
    printf("%c %d\n", x,i);
 +
    return 0;
 +
}
 +
</syntaxhighlight>
 +
</li>
 +
<li>
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
int main() {
 +
 +
    int i;
 +
    int soma=6;
 +
 +
    do {
 +
        if (soma=7)
 +
            break;
 +
        soma = soma + 1;
 +
    } while(soma<10);
 +
   
 +
    printf("soma =%d\n", soma);
 +
 +
    return 0;
 +
}
 +
</syntaxhighlight>
 +
</li>
 +
<li>
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
int main() {
 +
 +
  int i,j,k;
 +
 +
  i=5;
 +
  k=7;
 +
  j=6;
 +
  if(i>6 && i<10) {
 +
      j=j+k;
 +
  } else if (k!=5) {
 +
      j=j*10;
 +
  } else {
 +
      j++;
 +
  }
 +
  printf("%d\n", j);
 +
 +
  return 0;
 +
}
 +
</syntaxhighlight>
 +
</li>
 +
<li>
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
int main() {
 +
 +
  int i,j,k;
 +
 +
  i=0;
 +
  k=0;
 +
  do {
 +
      for(j=0;j<100;j++){
 +
          if (j==1)
 +
              break;
 +
          else {
 +
              continue;
 +
          }
 +
          k=k+1;
 +
      }
 +
      k=k+j;
 +
      i=i+1;
 +
  }while (i<2);
 +
 +
  printf("k=%d\n", k);
 +
  return 0;
 +
}
 +
</syntaxhighlight>
 +
</li>
 +
<li>
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
int main() {
 +
 +
  int x,i,N, produto=1,cont=0;
 +
 +
  do {
 +
      printf("Entre com o valor de N\n");
 +
      scanf("%d", &N);
 +
      if (N<=0)
 +
          printf("Número deve ser positivo, entre novamente...\n");
 +
  } while(N<=0);
 +
 +
  for (i=0;i<N;i++) {
 +
      printf("ENtre com o número %d \n", i+1);
 +
      scanf("%d", &x);
 +
      if (x>10 && x< 50)
 +
          cont = cont+1;
 +
  }
 +
 +
  printf("Maiores que 10 e menores que 50 => %d", cont);
 +
  return 0;
 +
}
 +
</syntaxhighlight>
 +
</li>
 +
<li>
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
int main()
 +
{
 +
 +
  int i=0,i_ant,fat_ant,N, fat=1;
 +
 +
  printf("Entre com o valor de N\n");
 +
  do {
 +
      scanf("%d", &N);
 +
      if (N<2)
 +
          printf("Valor de N deve ser maior que 1\n");
 +
  }while (N<2);
 +
 +
 +
  while (N>fat){
 +
        i_ant=i;
 +
        fat_ant=fat;
 +
        i = i+1;
 +
        fat = fat*i;
 +
  }
 +
  printf("Numero com fatorial imediatamente menor => %d com fatorial %d\n", i_ant,fat_ant);
 +
  return 0;
 +
}
 +
</syntaxhighlight>
 +
</li>
 +
</ol>

Edição das 10h23min de 11 de março de 2022

Objetivos

O aluno deverá ser capaz de:

  • utilizar uma Interface Gráfica de Desenvolvimento (IDE) para desenvolver programas C;
  • usar conceito de projeto
  • depurar programas na IDE

O que é uma IDE

  • IDE é um ambiente Integrado de Desenvolvimento de Software. O IDE integra gerenciador de projeto, editor, compilador, linkers, depuradores e terminais para visualização de forma que o desenvolvedor possa ter alta produtividade no desenvolvimento;
  • Exemplos de IDE: Netbeans, Eclipse, CLion...


O IDE CLion - Características e Como Instalar

  • cross-plataforma: pode ser usado em diferentes Sistemas Operacionais (ver [1]);
  • suporta oficialmente o compilador gcc (além de outros). O "gcc" e a ferramenta "make" devem estar instalados.
  • inclui ("bundle") o GDB, um deputarador da Gnu para código C/C++;

Existem duas opções de instalações para a realidade IFSC SJ:

  • Instalar o Linux em uma Máquina Virtual e depois instalar o CLion sobre o Linux
  • Instalar o CLion diretamente sobre o Windows e usando as ferramentas Minimum GNU

Vamos começar pela última opção considerando que o hardware disponível pode ter limitações.

VAMOS considerar que será instalada a VERSÃO TRIAL de 30 dias. Já foi comentado em sala que o ifsc já está cadastrado no site do CLIon então cada aluno poder aplicar para obter um código de ativação. Ver Como aplicar para o CLion.

Instalação sobre o Windows

Consiste nos seguintes passos:

  • Baixar o pacote de software MinGW de versão 64 bits.
  • Instalar MinGW, executar e selecionar os pacotes mingw-developer-tool, mingw32-base, mingw32-gcc-g++, mingw32-msys-base. Ver detalhes em [2]
  • Baixar o CLion de [3]. Note que o download começa de imediato. NÃO precisa aplicar neste momento para obter o funcionamento em modo trial. Para habilitação posterior deve ser usado o email do domínio IFSC
  • Ir na pasta Download e descompactar e executar o instalador do CLion.
  • Executar o CLion e configurar conforme colocado em [4]

Projeto em C com o CLion - Criação e Execução

Criar um projeto (<New Project>)com as configurações abaixo. Notar que um projeto será por default criado dentro de uma área de projetos (Workspace). O Workspace pode ser mudado mas não recomendamos fazer isto por enquanto.

PRG-TelaProjetoCLion.jpg

Na sequÊncia esta tela deve ser mostrada:


PRG-TelaEdicaoCLion.jpg

A execução do programa é realizada como mostrado abaixo:

PRG-TelaRun.jpg

Para mostrar linha no editor fazer: File->Settings->Editor->General->Appearance. ([5])

Depuração em Alto nível

A depuração em alto nível permite a execução passo a passo do programa (usando o depurado gdb). Cole o seguinte código no arquivo main.c:

#include <stdio.h>

int main() {
    int x,y;

    printf("Entre com o valor de x\n");
    scanf("%d", &x);
    x = x + 1;
    y = x * 7;
    printf("valor de x = %d\n", x);
    return 0;
}

Para explorar a execução passo a passo, coloque um BREAKPOINT na linha 6 (o primeiro printf) Vá até esta linha e faça CTRL-F8. Observe que a linha fica vermelha.

Execute conforme a tela abaixo. Em azul aparecerá a linha que SERÁ executada. Observe que no momento em que o scanf for executado, a entrada de dados é realizada em uma janela CONSOLE de apoio:

PRG-TelaDepuracao.jpg

Observar que o conteúdo das variáveis podem ser inspecionados sobrepondo o mouse sobre a variável:

PRG-TelaWatchComMouse.jpg

Uso de Funções da Biblioteca Matemática

Além de incluir no código fonte a diretiva:

#include <math.h>

Incluir no arquivo CMakeList.txt a linha

target_link_libraries(hello m)

Onde aparece o hello, substituir pelo nome do projeto.

Exercícios

Depurar os códigos abaixo:

  1. #include <stdio.h>
    
    int main() {
    
        char x;
        char i;
    
        x=95;
        for(i='M';i>65;i--){
            if(i=='F' || i=='A')
                x=x+1;
        }
        printf("%c %d\n", x,i);
        return 0;
    }
    
  2. #include <stdio.h>
    
    int main() {
    
        int i;
        int soma=6;
    
        do {
            if (soma=7)
                break;
            soma = soma + 1;
        } while(soma<10);
        
        printf("soma =%d\n", soma);
    
        return 0;
    }
    
  3. #include <stdio.h>
    
    int main() {
    
       int i,j,k;
    
       i=5;
       k=7;
       j=6;
       if(i>6 && i<10) {
           j=j+k;
       } else if (k!=5) {
           j=j*10;
       } else {
           j++;
       }
       printf("%d\n", j);
    
       return 0;
    }
    
  4. #include <stdio.h>
    
    int main() {
    
       int i,j,k;
    
       i=0;
       k=0;
       do {
           for(j=0;j<100;j++){
               if (j==1)
                   break;
               else {
                   continue;
               }
               k=k+1;
           }
           k=k+j;
           i=i+1;
       }while (i<2);
    
       printf("k=%d\n", k);
       return 0;
    }
    
  5. #include <stdio.h>
    
    int main() {
    
       int x,i,N, produto=1,cont=0;
    
       do {
           printf("Entre com o valor de N\n");
           scanf("%d", &N);
           if (N<=0)
               printf("Número deve ser positivo, entre novamente...\n");
       } while(N<=0);
    
       for (i=0;i<N;i++) {
           printf("ENtre com o número %d \n", i+1);
           scanf("%d", &x);
           if (x>10 && x< 50)
               cont = cont+1;
       }
    
       printf("Maiores que 10 e menores que 50 => %d", cont);
       return 0;
    }
    
  6. #include <stdio.h>
    
    int main()
    {
    
       int i=0,i_ant,fat_ant,N, fat=1;
    
       printf("Entre com o valor de N\n");
       do {
          scanf("%d", &N);
          if (N<2)
              printf("Valor de N deve ser maior que 1\n");
       }while (N<2);
    
    
       while (N>fat){
            i_ant=i;
            fat_ant=fat;
            i = i+1;
            fat = fat*i;
       }
       printf("Numero com fatorial imediatamente menor => %d com fatorial %d\n", i_ant,fat_ant);
       return 0;
    }