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

Ir para baixo
Monica Moreno
Monica Moreno
Mensagens : 731
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

Exercicio 4.09 Resolvido  Empty Exercicio 4.09 Resolvido

Ter Ago 15, 2023 3:54 pm
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 4.09
* Tema: Basico de String como variavel
* Atividade: Arrumas as maiusculas na string3, como se fosse nome proprio, colocar as primeiras letras de cada palavra em maiuscula e as demais em minuscula
* Descrição: Testar os caracteres da string usando as funções de teste de caractere
* 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: for(), isspace(), isupper(),
* 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: Quando declaramos string com s minusculo refere-se a uma variável, e quando String está com S maiusculo refere-se a objeto
* Dica3: 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
* Dica4: Lembrando que na linguagem C caractere é colocado entre ' ' (aspas simples), frases podem ser declaradas usando " " (aspas duplas)
* Dica5: 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,
* * Abaixo Funções de testes de caracteres, retorna 0 se a expressã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
*/

//DEFINICOES INICIAIS
#include //


//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal lcd(7,6,5,4,3,2); // 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
int i = 0; // contador

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //Inicializa porta serial
lcd.begin(16, 2); //Inicializa o display
strcpy(stringFinal, string3); //Copia da string3 para stringFinal, faz um backcup
}

//FUNÇÕES COMPLEMENTARES
void debug () {
Serial.print(i);
Serial.print(" ");
Serial.print(string3[i]);
Serial.print(" upper? ");
Serial.print(isupper(string3[i]));
Serial.print(" lower? ");
Serial.println(islower(string3[i]));
}

//PROGRAMA PRINCIPAL
void loop() {
Serial.print("String3 ANTES de ser tratada = ");
Serial.println(string3);
lcd.clear();
lcd.print(string3);
for(i = 0; i < strlen(string3); i++){
if(isspace(string3[i]) != 0) {
i ++;
string3[i] = toupper(string3[i]);
} else {
string3[i] = tolower(string3[i]);
}
if(i == 0){
if(isupper(string3[i]) == 0) string3[i] = toupper(string3[i]);
}
}
Serial.print("String3 DEPOIS de ser tratada = ");
Serial.print(string3);
Serial.print("\n");
lcd.setCursor(0, 1);
lcd.print(string3);
delay(2000);
strcpy(string3, stringFinal);
string3 = {"primeiRa frAse tEste"};
}

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

Exercicio 4.09 Resolvido  Empty Re: Exercicio 4.09 Resolvido

Dom Set 24, 2023 2:06 pm
Oi Monica, deve ter visto um erro de compilação, isso porque não pode carregar uma frase na string diretamente igual faz na declaração da string.
No meio do programa precisa usar o strcat() ou strcpy() para fazer a carga da frase na string.
O restante parece correto, salvo os comentarios.
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos