Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

<p>Time to say farewell</p><p>Prof. Me. Raphael Guedes</p><p>2024</p><p>raphaelguedes@ufg.br</p><p>INF0446 — Introdução à Programação</p><p>mailto:raphaelguedes@ufg.br</p><p>Agenda</p><p>1. Modularização de Código (headers)</p><p>2. Falando sobre o tempo (time.h)</p><p>3. Códigos que falam seu idioma, ou não… (locale.h)</p><p>4. Usando Coloração</p><p>2</p><p>● Um código pode ter um número incerto de linhas</p><p>○ Códigos com poucas linhas, códigos com muitas linhas.</p><p>● Como modularizar os códigos escritos?</p><p>○ Funções</p><p>○ Uso de arquivos de cabeçalhos (bibliotecas de usuário)</p><p>Modularização de Código</p><p>3</p><p>● Arquivos de cabeçalho:</p><p>○ definem funções, tipos de dados, constantes (macros);</p><p>○ permitem modularizar o código, abstraindo a complexidade de lógica e da</p><p>compreensão.</p><p>● Arquivos de cabeçalho podem ser:</p><p>○ De sistema</p><p>○ De usuário</p><p>● São chamados no início do código, sendo incluídos por meio da diretiva</p><p>#include e possuem a extensão .h</p><p>○ #include // cabeçalho/biblioteca de sistema</p><p>○ #include "nome.h" // cabeçalho/biblioteca de usuário</p><p>Arquivos de Cabeçalho</p><p>4</p><p>● Funcionamento</p><p>Arquivos de Cabeçalho</p><p>5</p><p>main.cminhaLogica.c minhaLogica.h</p><p>implementa a lógica</p><p>das funções</p><p>define os protótipos</p><p>das funções e macros</p><p>(constantes)</p><p>importa as bibliotecas</p><p>e utiliza na função</p><p>principal</p><p>Diretivas condicionais e Header guards</p><p>● Nos casos em que múltiplos cabeçalhos são incluídos, é preciso prevenir o</p><p>programa e realizar importações duplicadas.</p><p>○ Para isso, incluir as diretivas condicionais:</p><p>■ #ifndef // if not defined</p><p>■ #define // define</p><p>○ Ao final:</p><p>■ #endif // end if condition</p><p>● Os header guards são as definições do cabeçalho que será</p><p>importado/definido.</p><p>○ #ifndef MINHALOGICA_H_INCLUDED</p><p>○ #def MINHALOGICA_H_INCLUDED</p><p>6</p><p>Arquivos de Cabeçalho</p><p>#ifndef CALCULO_H_INCLUDED</p><p>#define CALCULO_H_INCLUDED</p><p>int soma(int a, int b);</p><p>#endif</p><p>7</p><p>Exemplo: calculo.h</p><p>Arquivos de Cabeçalho</p><p>#include</p><p>#include "calculo.h"</p><p>int soma(int a, int b) {</p><p>return a + b;</p><p>}</p><p>8</p><p>Exemplo: calculo.c</p><p>Arquivos de Cabeçalho</p><p>#include</p><p>#include</p><p>#include "calculo.h"</p><p>int main(){</p><p>printf("A soma calculada eh: %d\n", soma(5,3));</p><p>return 0;</p><p>}</p><p>9</p><p>Exemplo: main.c</p><p>Como compilar o projeto?</p><p>● Usando arquivos makefile</p><p>● Criando projeto na IDE: DevC++, Code Blocks</p><p>● Via linha de comando</p><p>No Linux</p><p>● gcc -o saida.o main.c minhaLogica.c</p><p>No Windows</p><p>● gcc -o saida.o main.c minhaLogica.c *************</p><p>10</p><p>Como compilar o projeto no windows?</p><p>1. Baixar MYS2 + tutorial do link</p><p>2. Inserir “C:\msys64\ucrt64\bin” em PATH (variáveis de usuário)</p><p>3. Testar instalação com gcc --version</p><p>4. Instalar C/C++ e C/C++ Extension Pack no VSCode</p><p>5. Inserir “C:\msys64\ucrt64\bin” em compilerPath</p><p>6. Finalmente</p><p>○ gcc -o saida.o main.c minhaLogica.c</p><p>11</p><p>https://www.msys2.org/</p><p>Falando sobre o tempo: aguardando</p><p>● Em C é possível determinar que um programa espere um determinado tempo</p><p>antes de executar o próximo comando.</p><p>○ Usa-se a função sleep()</p><p>● Contudo, a função varia entre sistemas POSIX e DOS</p><p>○ POSIX (Linux, macOS)</p><p>■ Função: sleep()</p><p>■ Biblioteca: unistd.h</p><p>■ Conta em segundos</p><p>○ DOS (Windows)</p><p>■ Função: Sleep()</p><p>■ Biblioteca: windows.h</p><p>■ Conta em milissegundos</p><p>12</p><p>Falando sobre o tempo: aguardando</p><p>#include</p><p>#include</p><p>int main() {</p><p>printf("Aguarda 5 segundos.\n");</p><p>sleep(5);</p><p>printf("Finalizou!\n");</p><p>return 0;</p><p>}</p><p>13</p><p>Para Linux</p><p>Falando sobre o tempo: aguardando</p><p>#include</p><p>#include</p><p>int main() {</p><p>printf("Aguarda 5 segundos.\n");</p><p>Sleep(5000); // Converter ms para sec.</p><p>printf("Finalizou!\n");</p><p>return 0;</p><p>}</p><p>14</p><p>Para Windows</p><p>Falando sobre o tempo: manipulando</p><p>Tipos e macros</p><p>● CLOCKS_PER_SEC: número de pulsos de clock em um segundo.</p><p>● clock_t: tipo capaz de representar as contagens clock e suportar operações</p><p>aritméticas.</p><p>● size_t: tipo inteiro sem sinal.</p><p>● time_t: tipo capaz de representar os tempos e suportar operações</p><p>aritméticas.</p><p>15</p><p>Falando sobre o tempo: manipulando</p><p>Tipos e macros</p><p>● struct tm: estrutura contendo data e hora divididas em seus componentes,</p><p>como descrito a seguir:</p><p>○ int tm_sec: segundos após minutos [0,61].</p><p>○ int tm_min: minutos após hora [0,59].</p><p>○ int tm_hour: horas desde a meia-noite [0,23].</p><p>○ int tm_mday: dia do mês [1,31].</p><p>○ int tm_mon: mês do ano [0,11].</p><p>○ int tm_year: anos desde 1900.</p><p>○ int tm_wday: dia da semana [0,6] (domingo = 0).</p><p>○ int tm_yday: dia do ano [0,365].</p><p>○ int tm_isdst: flag para horário de verão.</p><p>16</p><p>Falando sobre o tempo: manipulando</p><p>Manipulação do tempo</p><p>● clock_t clock(void): retorna o número de pulsos de clock decorrido desde que</p><p>o programa foi lançado.</p><p>● double difftime(time_t, time_t): retorna a diferença entre dois tempos.</p><p>● time_t mktime(struct tm *): converte uma estrutura tm em tipo time_t.</p><p>● time_t time(time_t *): retorna o tempo atual do calendário como um time_t.</p><p>17</p><p>Falando sobre o tempo: manipulando</p><p>Conversões</p><p>● char * asctime(const struct tm *): converte uma estrutura tm em string.</p><p>● char * ctime(const time_t *): converte um valor time_t em string.</p><p>● struct tm * gmtime(const time_t *): converte um valor time_t em estrutura tm</p><p>como tempo UTC.</p><p>● struct tm * localtime(const time_t *): converte um valor time_t em estrutura</p><p>tm como hora local.</p><p>● time_t strftime(char *, size_t, const char *, const struct tm *): converte o tempo</p><p>armazenado em uma estrutura tm para string.</p><p>18</p><p>Falando sobre o tempo: manipulando</p><p>● A função strftime() (string format time) converte o tempo de uma</p><p>estrutura tm para uma string.</p><p>● Há um conjunto de especificadores de formato.</p><p>19</p><p>Falando sobre o tempo: manipulando</p><p>● A função strftime() (string format time) converte o tempo de uma</p><p>estrutura tm para uma string.</p><p>● Há um conjunto de especificadores de formato.</p><p>20</p><p>Falando sobre o tempo: manipulando</p><p>#include</p><p>#include</p><p>#include</p><p>int main() {</p><p>setlocale(LC_ALL, "fr_FR");</p><p>time_t tempo;</p><p>struct tm *infotempo;</p><p>char texto[80];</p><p>time(&tempo);</p><p>infotempo = localtime(&tempo);</p><p>strftime(texto, 80,"Hora atual %I:%M%p.", infotempo);</p><p>printf("%s\n", texto);</p><p>strftime(texto, 80,"Data : %A, %d/%b/%Y", infotempo);</p><p>printf("%s\n", texto);</p><p>return 0;</p><p>}</p><p>21</p><p>Exemplo com strftime()</p><p>Falando sobre o tempo: medindo</p><p>● Como em várias partes da programação, há diferentes formas de medir o</p><p>tempo.</p><p>○ tempo de CPU (pulsos de clocks)</p><p>○ tempo decorrido (tempo em segundos)</p><p>22</p><p>Falando sobre o tempo: medindo</p><p>#include</p><p>#include</p><p>int main(){</p><p>clock_t start, end;</p><p>double cpu_time_used;</p><p>long int sum=0;</p><p>start = clock(); // Inicia a medição</p><p>for (int i; i</p><p>#include</p><p>int main() {</p><p>time_t start, end;</p><p>double real_time_used;</p><p>long int sum = 0;</p><p>start = time(NULL); // Inicia a medição</p><p>for (int i; i</p><p>ou não…</p><p>● categoria é uma macro definida para a localidade.</p><p>● local é o identificador da localidade.</p><p>● Com relação ao local, trata-se de um valor específico do sistema.</p><p>○ Dois valores sempre existirão:</p><p>■ “C”: para a localidade mínima da linguagem. Executado antes de qualquer</p><p>código.</p><p>■ “”: localidade-padrão do sistema</p><p>■ Tabela de localidades</p><p>27</p><p>https://www.ibm.com/docs/en/radfws/9.6.1?topic=overview-locales-code-pages-supported</p><p>Códigos que falam seu idioma, ou não…</p><p>#include</p><p>#include</p><p>#include</p><p>int main() {</p><p>printf("Utilização de acentuação em língua portuguesa!\n\n");</p><p>setlocale(LC_ALL, "pt_BR");</p><p>printf("Utilização de acentuação em língua portuguesa!\n\n");</p><p>return 0;</p><p>}</p><p>28</p><p>Usando coloração</p><p>● E se quisermos enfatizar as informações do nosso código usando coloração?</p><p>● Ou simplesmente colorir?</p><p>○ É possível!</p><p>● Pode depender da plataforma em uso!</p><p>● Ao usar cores, procurar estabelecer um contraste 10:1 (acessibilidade).</p><p>● É possível alterar a cor das letras (foreground) e do plano de fundo</p><p>(background)</p><p>● Tabela de cores</p><p>29</p><p>https://man7.org/linux/man-pages/man5/terminal-colors.d.5.html</p><p>Usando coloração</p><p>● A mudança é feita na string que será escrita em tela.</p><p>○ "\033["";"fg_color";"bg_color""m"</p><p>○ Em que :</p><p>■ \033 é o caracter de escape (ESC) em octal</p><p>■ 0 1 é a informação de fonte em negrito ou normal</p><p>■ ; → separador do estilo para a cor, ou de fg_color para bg_color</p><p>■ fg_color é um código ANSI que determina a cor da fonte</p><p>■ bg_color é um código ANSI que determina a cor do plano de fundo</p><p>○ "\033[1;33;41mMeu Texto\n"</p><p>■ Escreve a string Meu Texto</p><p>■ em negrito</p><p>■ com letras amarelas</p><p>■ com fundo vermelho</p><p>○ "\033[0m"</p><p>■ Restaura as cores padrões.</p><p>30</p><p>Usando coloração</p><p>#include</p><p>int main() {</p><p>printf("Texto Comum\n");</p><p>printf("\033[1;33;41m Preste Atencao!\n");</p><p>printf("\033[0mVoltou ao normal\n");</p><p>return 0;</p><p>}</p><p>31</p><p>Referências</p><p>● BACKES, André. Linguagem C - Completa e Descomplicada. Disponível em: Grupo GEN, (2 edição).</p><p>Grupo GEN, 2018.</p><p>● GEEKSFORGEEKS. Header files in C/C++ and its uses. Disponível em:</p><p>.</p><p>● SCHILDT, H.; ROBERTO CARLOS MAYER. C completo e total. [s.l.] São Paulo Pearson Education Do</p><p>Brasil, 2008.</p><p>32</p><p>https://www.geeksforgeeks.org/header-files-in-c-cpp-and-its-uses/</p><p>33</p><p>Obrigado!</p><p>raphaelguedes@ufg.br</p><p>raphaelguedes@inf.ufg.br</p>

Mais conteúdos dessa disciplina