Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 4.05 strings Empty Exercício 4.05 strings

Ter Jun 30, 2020 10:13 pm
Código:
/*
 * CURSO DE ROBOTICA 2020
 *
 * Exercicio: 4.5
 * Tema: Basico de String como variavel
 * Atividade: Conhecimentos iniciais sobre Strings
 * Descrição: Ralizar a declaração a inicialização das strings para os testes das funções de manipulação de string
 * Hardware: Montar o display e a porta serial para as entradas e saídas de dados
 * Exercício desse capitulo interpretar e comentar as linhas do programa principal na função loop()
 * Comandos:
 * Dica1: string é uma cadeia de caracteres, podemos até mesmo dizer um vetor de caracteres. Trás a linguagem C a capacidade de lidar com frases e palavras.
 * Dica2: Declaração da variavel string char nome_vetor[tamanho]{'a','b','c'}; tipo dos dados, sempre char. Nome do vetor identifica a variável. Entre conchetes vai o tamanho do vetor, depois
 * Dica3: Lembrando que na linguagem C caractere é colocado entre ' ' (aspas simples), frases podem ser declaradas usando " " (aspas duplas)
 * Dica4: Toda string termina com um caractere nulo no final(código ASCII 0), por isso na declaração deve considerar um elemento a mais no tamanho,
 * * Funções para manipulação de strings
 * strcpy(string_destino, string_origem); // Realiza a cópia do conteúdo de uma variável a outra.
 * strncpy(string_destino, string_origem, tamanho); //Realiza a cópia do conteúdo de uma variável a outra, porém, deve ser especificado o tamanho a ser copiado.
 * strcat(string_destino, string_origem); // Realiza a concatenação do conteúdo de uma variável a outra.
 * strncat(string_destino, string_origem, tamanho); //Realiza a concatenação do conteúdo de uma variável a outra, porém, deve ser especificado o tamanho a ser concatenado.
 * variável tipo inteiro = strlen(string); // Determina o tamanho de uma string.
 * variável tipo inteiro = strcmp(string1, string2); // Compara o conteúdo de duas strings;Resultados: 0: conteúdo das strings são iguais, < 0: conteúdo da string1 é menor do que string2, > 0: conteúdo da string1 é maior do que string2
 * variável tipo inteiro = strncmp(string1, string2, tamanho); // Também faz a comparação do conteúdo de duas strings, porém, deve ser especificado o tamanho a ser comparado
 * * Abaixo Funções de testes de caracteres, retorna 0 se a extressão for falsa; outro valor maior que 0 (zero) se for verdadeiro
 * isalnum(char) Verifica se o caractere é alfanumérico (letra e número)
 * isalpha(char) Verifica se o caractere é uma letra
 * iscntrl(char) Verifica se o caractere é um caractere de controle https://pt.wikipedia.org/wiki/ASCII
 * isdigit(char) Verifica se o caractere é um a letra
 * isgraph(char) Verifica se o caractere é um caractere gráfico
 * islower(char) Verifica se o caracteres é uma letra minúscula
 * isprint(char) Verifica se o caractere é imprimível
 * isalnum(char) Verifica se o caractere é alfanumérico
 * ispunct(char) Verifica se o caractere é um caractere de pontuação
 * isspace(char) Verifica se o caractere é um espaço em branco
 * isupper(char) Verifica se o caractere é uma letra maiúscula
 * isxdigit(char)  Verifica se o caractere é um caractere hexadecimal (0-9 ou A-F)
 * ispunct(char) Verifica se o caractere é um caractere de pontuação
 * * Abaixo Funções para manipular caracteres
 * tolower(char) Converte o caractere para letra minúscula
 * toupper(char) Converte o caractere para letra maiúscula
 * atoi(string) Converte uma string com caracteres numericos em um numero inteiro
 * ---------------------------------------------------------------------------------------------------
 * Exercício:
 * Publique no fórum o resultado de cada uma das partes e faça o comentário com a explicação daquele resultado.
 */

//EFINICOES INICIAIS
#include <LiquidCrystal.h> //Carrega a biblioteca com as funções do display
#define tecla 2            //Definido que o pino 2 vai se chamar tecla
#define continua "\nDigite a tecla para continuar...\n" //usado como constante para liberar memoria RAM

//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal lcd(12,11,10,9,8,7); // Setup conforme as ligações realizadas RS-EN-D4-D5-D6-D7
char string1[] = {'a','R','d','U','i','N','o','.'};  // declaração de uma string sem tamanho definido, declarado cada caractere, o nulo e o tamanho serão colocados automaticamente
char string2[6] = {'c','U','r','s','o','\0'};        // declaração de string com tamanho definido e o nulo inserido no final
char string3[] = {"primeiRa frAse tEste"};            // declaração de string usando uma frase entre aspas duplas, o tamanho e o nulo são colocados automaticamente
char string4[4] = {'1','2','3'};                      // declaração de string com tamanho e definido  e o nulo será colocado automáticamente, ao definir o tamanho terá que reservar o espaço para o nulo
char string5[] = {"Curso de C"};                      // declaração de string
char stringFinal[30];                                // declaração de uma string com 30 posições, vazia. Pode ser colocado até 29 caracteres que estão previamente alocados na memória
 
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);              //Inicializa porta serial
lcd.begin(16, 2);                //Inicializa o display configurado como 16 colunas e 2 linhas
lcd.clear();                      //limpa o diaplay
pinMode(tecla, INPUT_PULLUP);    //Configura o pino tecla (2) como entrada pullup
}

//FUNÇÕES COMPLEMENTARES
void leTecla(){                      // Rotina para segurar o loop enquanto a tecla não for pressionada
while(digitalRead(tecla) == HIGH){    // Aguarda a tecla ser pressionada
  delay(50);                          // delay inserido para evitar ruido na tecla
}
while(digitalRead(tecla) == LOW){    //Aguarda a tecla ser depressionada
  delay(50);                          // delay inserido para evitar ruido na tecla
}
}

//PROGRAMA PRINCIPAL
void loop() {
Serial.print("PRIMEIRA PARTE - Apresentacao das Strings\n");
Serial.print("\nchar string1[] = {'a','R','d','U','i','N','o','.'};\n");
Serial.print(string1);
Serial.print("\nchar string2[6] = {'c','U','r','s','o','\\0'};\n");
Serial.print(string2);
Serial.print("\nchar string3[] = {\"primeiRa frAse tEste\"};\n");
Serial.print(string3);
Serial.print("\nchar string4[4] = {'1','2','3'};\n");
Serial.print(string4);
Serial.print("\nchar string5[] = {\"Curso de C\"};\n");
Serial.print(string5);
Serial.print("\nchar stringFinal[30];\n");
Serial.print(stringFinal);
Serial.print(continua);
leTecla();
Serial.print("\nSEGUNDA PARTE - Manipulacao de strings\n");
Serial.print("Comando strlen informa o tamanho da string, abaixo o resultado para cada string declarada inicialmente\n");
Serial.print("strlen(string1) = ");
Serial.println(strlen(string1));
Serial.print("strlen(string2) = ");
Serial.println(strlen(string2));
Serial.print("strlen(string3) = ");
Serial.println(strlen(string3));
Serial.print("strlen(string4) = ");
Serial.println(strlen(string4));
Serial.print("strlen(string5) = ");
Serial.println(strlen(string5));
Serial.print("strlen(stringFinal) = ");
Serial.println(strlen(stringFinal));
Serial.print("\nComando de copia strcpy(stringFinal, string1);\n");
strcpy(stringFinal, string1);
Serial.print("string1 = ");
Serial.print(string1);
Serial.print(" - stringFinal = ");
Serial.print(stringFinal);
Serial.print("\nComando de copia com tamanho strncpy(stringFinal, string3,10);\n");
strncpy(stringFinal, string3,10);
Serial.print("string3 = ");
Serial.print(string3);
Serial.print(" - stringFinal = ");
Serial.print(stringFinal);
Serial.print(continua);
leTecla();
Serial.print("\nTERCEIRA PARTE - Manipulacao de Caracteres\n");
Serial.print("Abaixo o resultado do teste string1[0]\n");
if(isalnum(string1[0]) != 0)Serial.print("E alphanumerico\n");else Serial.print("Nao e alphanumerico\n");
if(isalpha(string1[0]) != 0)Serial.print("E letra\n");else Serial.print("Nao e letra\n");
if(iscntrl(string1[0]) != 0)Serial.print("E controle\n");else Serial.print("Nao e controle\n");
if(isdigit(string1[0]) != 0)Serial.print("E letra\n");else Serial.print("Nao e letra\n");
if(isgraph(string1[0]) != 0)Serial.print("E grafico\n");else Serial.print("Nao e grafico\n");
if(islower(string1[0]) != 0)Serial.print("E minusculo\n");else Serial.print("Nao e minusculo\n");
if(isupper(string1[0]) != 0)Serial.print("E maiusculo\n");else Serial.print("Nao e maiusculo\n");
if(isprint(string1[0]) != 0)Serial.print("E imprimivel\n");else Serial.print("Nao e imprimivel\n");
if(ispunct(string1[0]) != 0)Serial.print("E pontuacao\n");else Serial.print("Nao e pontuacao\n");
if(isspace(string1[0]) != 0)Serial.print("E espaco\n");else Serial.print("Nao e espaco\n");
if(isxdigit(string1[0]) != 0)Serial.print("E hexadecimal\n");else Serial.print("Nao e hexadecimal\n");
Serial.print(continua);
leTecla();
Serial.print("\nQUARTA PARTE - Maiusculas e Minusculas\n");
Serial.print("Para converter entre maiusculo e minusculo  usaremos string3[0] = ");
Serial.print(string3[0]);
Serial.print("\nConvertendo para maiusculo a string fica assim: ");
string3[0] = toupper(string3[0]);
Serial.print(string3);
Serial.print("\nVoltando para minusculo fica assim: ");
string3[0] = tolower(string3[0]);
Serial.print(string3);
Serial.print("\nConvertendo a string4 em numero\n");
int numero = atoi(string4);
numero = numero + 10;
Serial.print(numero);
Serial.print(continua);
leTecla();
}

alvaro 123456 gosta desta mensagem

Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 4.05 strings Empty Re: Exercício 4.05 strings

Sáb Jul 04, 2020 12:27 am
Para ajudar na resolução do exercício, e inspirar voces, vou resolver algumas das linhas do resultado,

PRIMEIRA PARTE - Apresentacao das Strings

char string1[] = {'a','R','d','U','i','N','o','.'}; //String declarada sem definição de tamanho e inicializada caractere a caractere, uma das formas de inicialização
aRdUiNo. // Resultado da impressão do conteúdo da string, ou caracteres que compões a string

Digite a tecla para continuar...

SEGUNDA PARTE - Manipulacao de strings
Comando strlen informa o tamanho da string, abaixo o resultado para cada string declarada inicialmente
strlen(string1) = 8 //A string1 foi inicializada sem tamanho declarado, foi inserido 8 caracteres e portanto strlen() retornou o valor 8


Comando de copia strcpy(stringFinal, string1); //Esse comando copia o conteúdo da string1 para stringFinal, que estava sem nenhum elemento
string1 = aRdUiNo. - stringFinal = aRdUiNo. //O resultado foi a stringFinal com o mesmo conteúdo da string1

Digite a tecla para continuar...

TERCEIRA PARTE - Manipulacao de Caracteres
Abaixo o resultado do teste string1[0]
E alphanumerico //Teste com a realizado no primeiro elemento da string1, Que estava inicializado com o caractere 'a' que é alphanumérico retornando verdadeiro para o teste isalnum()

Digite a tecla para continuar...

QUARTA PARTE - Maiusculas e Minusculas
Para converter entre maiusculo e minusculo usaremos string3[0] = p //string usada para demonstrar a manipulação de caractere, usado a posição 0 da string3
Convertendo para maiusculo a string fica assim: PrimeiRa frAse tEste //Resultado após aplicação da função de manipulação, convertendo a primeira letra para maiuscula

Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos