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
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
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
Permissões neste sub-fórum
Não podes responder a tópicos