sábado, 12 de setembro de 2020

Exercicios de Aplicação

 

Exercícios de Aplicação

  1. Crie uma função que exibe uma mensagem
  2. Crie um programa que exibe uma mensagem 5 vezes usando uma estrutura de repetição.
  3. Programa que exibe mensagem usando funções.
  4. Programa que recebe várias mensagens usando estrutura de repetição e exibir na tela.
  5. Uma função que recebe duas strings como argumento e informa se as strings são iguais. Se forem iguais retornar 1 e caso contrario 0.
  6. Programa que recebe três valores via teclado e calcula o produto desses números.
  7. Programa que exibe o maior de dois números
  8. Programa que recebe 10 números inteiros e determina o menor
  9. Programa que recebe como argumento um array e o seu respectivo tamanho e exibe o menor usando funções.
  10. Programa que recebe um array e o seu respectivo tamanho e no final exibir na ordem crescente. Coloque a função de ordenação fora do método main.


Share:

domingo, 14 de junho de 2020

Vectores e Matrizes - C++


                Vectores, Matrizes    


                   Vectores  

Um vector é uma colecção de variáveis de um mesmo tipo, que compartilham o mesmo nome e que ocupam posições consecutivas de memória. Cada uma dessas variáveis denomina-se elemento e é identificada por um índice. Se é um vector com posições, seus elementos são v[0], v[1], v[2], ..., v[n-1].
Um vetor para armazenar 5 números inteiros pode ser criado da seguinte maneira:

                sintaxe: 

                        vector <type> variable (elements)

                                 int v[5];

                    Inicialização de vectores   
Em C++, vetores globais e estáticos são automaticamente zerados pelo compilador.
Mas, se for desejado, podemos inicializá-los explicitamente no momento em os declaramos. Nesse caso, os valores iniciais devem ser fornecidos entre chavetas e separados por vírgulas.

Exemplo: Inicialização de vector estático:

#include <stdio.h>
void main(void) {
static float moeda[5] = {1.00, 0.50, 0.25, 0.10, 0.05};
...
}

Os valores são armazenados, a partir da posição 0 do vector, na ordem em que são fornecidos; por exemplo, o valor 0.25 é armazenado em moeda[2].
Note que apenas expressões e valores constantes são permitidas numa lista de valores iniciais. O uso de variáveis causa erro de compilação.
Se a lista de valores iniciais tem mais elementos que a capacidade do vector, ocorre um erro de compilação. Entretanto, se tem menos que o necessário, as posições excedentes do vector permanecem zeradas.

Exemplo:
O exemplo a seguir permite inserir os valores do vector via teclado:
#include <iostream>
using namespace std; 
int main () {
int i, num[7];
for (i=0;i<=6;i++){
  cout << "Digite o numero: ";
  cin >> num[i];
 }
cout << num[0] << endl;
cout << num[1] << endl;
cout << num[2] << endl;
cout << num[3] << endl;
cout << num[4] << endl;
cout << num[5] << endl;
cout << num[6] << endl;
return 0;
}


                 Matrizes  

Uma matriz é uma colecção homogénea bidimensional, cujos elementos são distribuídos em linhas e colunas. Se é uma matriz mxn, então suas linhas são indexadas de 0 a m-1 e suas colunas de 0 a n-1. Para acessar um particular elemento de A, escrevemos A[i][j], sendo o número da linha e número da coluna que o elemento ocupa.

ExemploUma matriz 3×4 de números inteiros.
                      int A[3][4];

Essa declaração cria uma matriz cujos elementos ocupam as seguintes posições:
  1. A[0][0], A[0][1], A[0][2], A[0]A[3], A[0][4].
  2. A[1][0], A[1][1], A[1][2], A[1]A[3], A[1][4].
  3. A[2][0], A[2][1], A[2][2], A[2]A[3], A[2][4].
  4. A[3][0], A[3][1], A[3][2], A[3]A[3], A[3][4].

                 Inicialização de Matrizes  
Se lembrarmos que uma matriz nada mais é que um vector cujos elementos são vectores, a sintaxe para a sua inicialização não tem grandes novidades.
#include <iostream>
using namespace std; 
int main () {
int i,t,num[4][4];
for (i=0;i<4;i++){
for(t=0;t<4;t++){
cout << "Digite o numero: ";
cin >> num[i][t];
}
}
for (i=0;i<4;i++){
cout << endl;
for(t=0;t<4;t++){
cout << num[i][t] << " ";
}
}
   return 0;
}


              Exercícios  
1.  Crie tipos de vectores para armazenar:
             a. as letras vogais do alfabeto.
             b. as temperaturas diárias de uma semana.
             c. o número de dias em cada um dos meses do ano.

2. Crie um programa que efectue a leitura de duas strings. Se elas forem iguais exibe a mensagem  “strings iguais” e caso contrário, concatene as duas strings e imprima a string resultante.

3. Crie um programa que efectue a declaração de duas strings com capacidade para 30 caracteres. Leia pela entrada padrão a primeira string. Em seguida, copie o texto da primeira string para a segunda. Mostre no final o conteúdo das duas strings

4. Leia um texto pela entrada padrão com no máximo 99 caracteres. Em seguida imprima o número de caracteres digitados. 

5. Crie um programa que efectua a soma de todos valores de um array unidimensional de qualquer tamanho e mostrar a média.

6. Ordene de forma crescente os seguintes elementos do array (1,8,3,5,7,6,4).

7. Crie um array para exibir o seguinte output:
     08  09  10  11
     12  13  14  15
8. Crie um programa que recebe um valor do tipo inteiro e faça uma busca em um array de 10 elementos. No final devera informar quantos valores foram encontrados ou informar nenhum valor foi encontrado.
Share:

Linguagem C - Tratamento de erros


Tratamento de erros

C - Tratamento de erros

A linguagem C não fornece suporte direto para o tratamento de erros, mas fornece acesso em nível inferior na forma de valores de retorno. A maioria das chamadas de função C ou mesmo Unix retornam -1 ou NULL em caso de erro e configuram um código de erro errno. É definido como uma variável global e indica que ocorreu um erro durante qualquer chamada de função.

Portanto, um programador C pode verificar os valores retornados e executar as ações apropriadas, dependendo do valor  de retorno. É uma boa prática, definir errno como 0 no momento da inicialização de um programa. Um valor 0 indica que não há erro no programa.

 

Funções

A linguagem de programação C fornece funções perror () e strerror () que podem ser usadas para exibir a mensagem de texto associada ao erro.

·         perror () -  exibe a string que recebe como parametro, seguida por dois pontos, um espaço e, em seguida, a representação textual do valor atual do erro.

·         strerror () - retorna um ponteiro para a representação textual do valor atual do erro.

 

Vamos tentar simular uma condição de erro e tentar abrir um arquivo que não existe. Aqui, estou usando as duas funções para mostrar o uso, mas você pode usar uma ou mais maneiras de imprimir seus erros. O segundo ponto importante a ser observado é que você deve usar o fluxo de arquivos stderr  para gerar todos os erros.

#include <stdio.h>
#include <errno.h>
 
extern int errno ;
 
int main () {
 
   FILE * pf;
   int errnum;
   pf = fopen ("ola.txt", "rb");
    
   if (pf == NULL) {
  
      errnum = errno;
      fprintf(stderr, "Valor do erro: %d\n", errno);
      perror("Erro exibido pela função perror");
      fprintf(stderr, "Erro ao tentar abrir o ficheiro: %s\n", strerror( errnum ));
   } else {
  
      fclose (pf);
   }
  
   return 0;
}


Share:

quinta-feira, 4 de junho de 2020

Ficheiros - Linguagem C


          Ficheiros           

Este tópico descreve como os programadores C podem criar, abrir, fechar arquivos de texto ou binários para o armazenamento de dados.

Um arquivo representa uma sequência de bytes, independentemente de ser um arquivo de texto ou binário. A linguagem de programação C fornece acesso a funções de alto nível, bem como chamadas de baixo nível (nível do SO) para manipular arquivos em seus dispositivos de armazenamento.

A biblioteca principal stdio C contém um grande número de rotinas para manipulação de ficheiros/arquivos , antes de realizar qualquer operação é necessário incluir a biblioteca;

    #include <stdio.h>

A declaração da variável de ficheiro é feita através do comando FILE:

    FILE *variavelFile;

Em seguida pode usar a função fopen () para criar um novo arquivo ou abrir um arquivo existente.  Essa chamada inicializará um objeto do tipo FILE, que contém todas as informações necessárias para controlar o fluxo, que é descrita da seguinte forma: 

    variavelFile = fopen (nome,modo);

Onde:

  • variavelFile – é a variável do ficheiro;
  • nome – o nome do ficheiro;
  • modo – indica a acção a ser realizada, r é para leitura, r para escrita, etc;

Veja a seguir algumas opções possíveis e o seu significado:

Modo

Descrição

r

Abre um determinado ficheiro apenas para leitura

w

Abre um determinado ficheiro para escrita e caso não exista cria um novo.

a

Abre um determinado ficheiro para escrita no modo appending  acrescentando a informação ao conteúdo existindo e caso não exista cria um novo é criado.

r++

Abre um arquivo de texto para leitura e gravação

a+

Abre um arquivo de texto para leitura e gravação. Ele cria o arquivo se  não existir. A leitura começará do início, mas a escrita só pode ser anexada.

 

        Funções       

A linguagem C possui várias funções para a manipulação de arquivos:

Função

Descrição

fopen

para criar um novo arquivo ou abrir um  existente

fclose

Fecha um ficheiro aberto

fputc

Grava apenas um caracteres

fprintf

Converte os dados de binário para caracteres e grava no ficheiro

fgetc

Lê apenas um caracteres

fscanf

 Similar ao scanf

EOF

End of file. Fim do ficheiro

 

 

Leitura de ficheiros
As operações de leitura de ficheiros podem ser executadas usando as funções fscanf ou fgets. Ambas as funções executaram as mesmas operações que o scanf e obtém, mas com um parâmetro adicional, o ponteiro do arquivo.

O trecho de código para ler um arquivo é o seguinte:

FILE *ponteiroFicheiro;
ponteiroFicheiro = fopen ("nomedoFicheiro", "r");
fscanf (ponteiroFicheiro, "%s %s %s %d", str1, str2, str3,&ano);



Gravando no ficheiro

As operações de gravação de arquivo podem ser realizadas pelas funções fprintf e fputs com semelhanças com as operações de leitura. 

O trecho de código para gravar no ficheiro é o seguinte:

FILE * ponteiroFicheiro;
ponteiroFicheiro = fopen ("nomedoficheiro.txt", "w");
fprintf (ponteiroFicheiro,"%s% s% s% d", "Nós", "estamos", "em", 2012);



Fechando o ficheiro 

Após todas as operações bem-sucedidas, é necessário fechar o ficheiro. Para fechar um arquivo, recorre-se a função fclose.

O trecho de código para fechar um arquivo é o seguinte:

FILE * ponteiroFicheiro;
ponteiroFicheiro = fopen ("nomedoficheiro.txt", "w");
fclose (ponteiroFicheiro)


Exemplo 

Crie um programa que exibe conteúdo de um ficheiro.

#include <stdio.h>

int main(){

     FILE *fp1;

     char c;

     fp1= fopen ("ola.txt", "r");

     while(1){

        c = fgetc(fp1);

        if(c==EOF)

            break;

        else

            printf("%c", c);

     }

     fclose(fp1);

     return 0;

}


Video aula - Gravando os dados no ficheiro

        Referencias        

1.       https://www.tutorialspoint.com/cprogramming/c_file_io.htm

1.       https://www.geeksforgeeks.org/basics-file-handling-c/


Share:

sexta-feira, 29 de maio de 2020

Exercicios de aplicação - Funções


         Exercícios de aplicação - Funções       

Usando mais de uma função resolva os exercícios propostos:

  1. Crie uma função que exibe uma mensagem.
  2.  Crie um programa que exibe uma mensagem 5 vezes usando uma estrutura de repetição.
  3.   Programa que recebe várias mensagens usando estrutura de repetição e exibir na tela.
  4. Uma função que recebe duas strings como argumento e informa se as strings são iguais. Se forem iguais retornar 1 e caso contrario 0.
  5. Programa que recebe três valores via teclado e calcula o produto desses números.
  6. Programa que exibe o maior de dois números
  7. Programa que recebe 10 números inteiros e determina o menor
  8. Programa que recebe como argumento um array e o seu respectivo tamanho e exibe o menor usando funções.
  9. Programa que recebe um array e o seu respectivo tamanho e no final exibir na ordem crescente. Coloque a função de ordenação fora do método main.
  10. Considere a matriz bidimensional A = {{ 7, 16, 55, 13, 12 }, { 12, 10, 52, 0, 7 }, { -2, 1, 2, 4, 9 }}. Crie uma função que recebe como argumento uma matriz bidimensional A e determinar e exibir o seu dobro. 
Share:

Exercícios de aplicação - CANVAS



      Exercícios de aplicação - CANVAS            


Share:

terça-feira, 26 de maio de 2020

Pré-Processamento - Directiva condicional


        Pré-Processamento       

 Directivas condicionais directives (C/C++)

 Directivas condicionais instruem ao  pré-processador a seleccionar se deve ou não incluir um pedaço de código no fluxo de token final passado para o compilador. Podem testar expressões aritméticas ou se um nome é definido como uma macro ou ambos simultaneamente usando uma directiva especifica.

A linguagem de programação C apresenta um conjunto de directivas que são usadas para estruturas de controlo condicionais: #if, #elif, #else, and #endif.


Directiva

Descrição

Sintaxe

#if

Testa se uma determinada expressão é verdadeira

#if expression
//code
#endif

#else

A alternativa de #if

#if expression
//if code
#else
//else code
#endif

#elif

#else e #if em apenas uma directiva

#if expression
//if code
#elif expression
//elif code
#else
//else code
#endif

#endif

Término da instrução #if

 

#ifdef

Retorna verdadeiro se o macro estiver definido

#ifdef MACRO
//code
#endif

#ifndef

Retorna verdadeiro se o macro não estiver definido

#ifndef MACRO
//code
#endif

 

Exemplo:

#include <stdio.h> 

#include <conio.h> 

#define NUM 1 

int main() { 

       #if NUM==0 

           printf("O valor do numero e': %d",NUMBER); 

       #else 

          printf("O valor do numero nao e'' zero"); 

       #endif        

return 0;

}

Operadores de Macro

Existem operadores que tem um significado especifico no contexto de operadores.

 

Operador      

Nome

Descrição

\

Operador de continuidade

Sinaliza a continuidade da declaração na linha seguinte

#

 

Stringize

 

Ao usar ao longo da declaração do macro. Sinaliza a conversão do valor de macro para string

##

Token pasting

Combina 2 argumentos em apenas um

#defined()

defined

É aplicado em macro para verificar se uma constante esta definida. Caso esteja definido retorna true(1) caso contrario retorna false(0)

 

Exemplo:

Verifica se o número é igual a zero e mostra a mensagem correspondente.

#include <stdio.h> 

#include <conio.h> 

#define NUM 1 

int main() { 

#if NUM==0 

printf("O valor do numero e': %d",NUM); 

#else 

printf("O valor do numero nao e' zero"); 

#endif        

return 0;

}

  

 

Observações

Cada diretiva #if em um arquivo de origem deve corresponder a uma diretiva #endif de fechamento. Qualquer número de diretivas #elif pode aparecer entre as diretivas #if e #endif, mas no máximo uma diretiva #else é permitida. A diretiva #else, se presente, deve ser a última diretiva antes de #endif.

 

As diretivas #if, #elif, #else e #endif podem aninhar nas partes de texto de outras diretivas #if. Cada diretiva #else, #elif ou #endif aninhada pertence à diretiva #if anterior mais próxima.

 O pré-processador seleciona uma das ocorrências de texto fornecidas para processamento adicional. Um bloco especificado no texto pode ser qualquer sequência de texto. Pode ocupar mais de uma linha.

 O pré-processador seleciona um único item de texto avaliando a expressão constante após cada diretiva #if ou #elif até encontrar uma expressão constante verdadeira (diferente de zero). S seleciona todo o texto (incluindo outras diretivas de pré-processador começando com #) até o #elif, #else ou #endif associado.

 Se todas as ocorrências de expressão constante forem falsas ou se nenhuma diretiva #elif aparecer, o pré-processador selecionará o bloco de texto após a cláusula #else. Quando não há cláusula #else, e todas as instâncias de expressão constante no bloco #if são falsas, nenhum bloco de texto é selecionado.

 
Share:

Seguidores

Visitantes do blog

Pesquisar neste blogue

posts recentes