diff --git a/curso/aula-09.org b/curso/aula-09.org index 49c989f..6c5a0f6 100644 --- a/curso/aula-09.org +++ b/curso/aula-09.org @@ -1343,9 +1343,20 @@ e os ajustes, se forem necessários. * Exercícios propostos -1. Altere o valor em =num_str=, nos testes da sub-rotina =_str_to_uint=, e +1. Tanto a função quanto a sub-rotina têm alguns problemas práticos não contemplados, como: + - Não tratam strings iniciadas com espaços em branco; + - Não tratam números com zeros à esquerda. + Inclua esses tratamentos em ambas as implementações de conversão. +2. Altere o valor em =num_str=, nos testes da sub-rotina =_str_to_uint=, e analise os resultados com o GDB. -2. Em C, crie as funções =str_to_ulong= (string para inteiros longos sem sinal) +3. Em C, crie as funções =str_to_ulong= (string para inteiros longos sem sinal) e =str_to_slong= (string para inteiros longos com sinal). -3. Em Assembly, crie as sub-rotinas =_str_to_ulong= e =_str_to_slong=. +4. Em Assembly, crie as sub-rotinas =_str_to_ulong= e =_str_to_slong=. +5. Implemente predicados (funções que retornam verdadeiro ou falso) para detectar: + - Se a string representa um número (=is_num=); + - Se o número representado é do tipo =int= (=is_int=); + - Se o número representado é do tipo =long= (=is_long=); + - Se o número representado é positivo (=is_pos=). +6. Só para aproveitar o embalo, crie uma função para detectar se uma cadeia de + caracteres é uma string (=is_string=).