├── Debug.jpg ├── Interface_replit.png ├── README.md ├── comandos_shell.png ├── debugger.png ├── debugger_interface.png ├── makefile.png ├── next_breakpoint.png ├── next_step.png ├── restart.png ├── run.png ├── showhidden.png ├── skip_step.png ├── start_debug.png ├── step.png ├── step_in.png ├── step_out.png ├── stop.png └── syntaxerror.png /Debug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/Debug.jpg -------------------------------------------------------------------------------- /Interface_replit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/Interface_replit.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS** 2 | 3 | 4 | # Ficha de Exercícios - 1 - Introdução ao replit.com 5 | 6 | **Objetivo:** esta ficha tem como objetivo familiarizar-se com o WSL+VsCode ou alternavamente Replit e a forma de escrever, compilar e executar um programa. Irá aprender igualmente aspectos básicos do C. Finalmente, realizará um conjunto de exercícios de código C, explorando tipos de variáveis e usando as funções de leitura e escrita. 7 | 8 | ## Interface do VSCode no WSL 9 | 10 | Sigam os seguintes videos. 11 | 12 | 1 - Instalar WSL 13 | https://youtu.be/L6vhzhQkLX8?si=QfqiISWyitkdj95K 14 | 15 | 2 - Configurar o VSCode 16 | https://youtu.be/f9V8xmyrUrU?si=5GHRgaJrzx-MB7de 17 | 18 | 3 - Correr o Hello World 19 | https://youtu.be/GR6DHz0UKxM?si=FqZDHZFPvt_toDx8 20 | 21 | 22 | ## Interface do Replit 23 | 24 | ![](Interface_replit.png) 25 | 26 | 29 | 30 | ## Exercício 1 31 | * Aceda ao site https://replit.com/ e crie um conta 32 | * Aceda a https://replit.com/@PedroSerra/FirstProgramInC e pressione o botão **Fork repl** 33 | 1. Implemente agora o pequeno e famoso código do “Hello world”: 34 | Escreva (não copie!) o seguinte código: 35 | ``` 36 | #include 37 | 38 | /* Isto e um comentário. Multi-linha 39 | Primeiro programa 40 | na linguagem C. */ 41 | 42 | int main (void) 43 | { 44 | // isto e um comentario so de uma linha 45 | printf("Hello World!\n"); 46 | return 0; 47 | } 48 | 49 | ``` 50 | 3. Compile e execute o programa pressionando o botão **Run** 51 | 4. Na consola de terminal - consola lateral 52 | 5. Escreva a instrução para compilar o código: 53 | ```gcc -Wall -Wpedantic -Wextra -Wvla -g main.c -o main``` ou ... 54 | 55 | ![](showhidden.png) 56 | 57 | ...edite o arquivo tal como descrito abaixo: 58 | 59 | ![](makefile.png) 60 | 61 | 5. Execute o código: 62 | 6. ```./main``` 63 | 64 | Sugestões: 65 | * Na escrita de código, respeite sempre a indentação (colocação de novas linhas e texto “avançado”). 66 | * Não utilize carateres com acentos ou “ç”, pois não são reconhecidos pelo compilador. 67 | * Nunca copie código escrito em processadores de texto. Muitas vezes código editado em processadores de texto ficam com as aspas desformatadas, em vez de " " fica “ ”. Exemplo: printf("Hello World!\n"); é diferente de printf(“Hello World!\n”); (se não percebeu a diferença, leia novamente com atenção!) 68 | 69 | ## Introdução ao Debugger 70 | O debugger (depurador) é um programa usado para testar outro programa e fazer sua depuração, que consiste em encontrar os defeitos do programa. O Replit possui um compilador integrado 71 | 72 | ![](debugger_interface.png) 73 | 74 | Como utilizar: 75 | 1. Na barra lateral pressione o ícon do Debugger 76 | 2. Coloque um breakpoint (ponto de paragem de execução) numa determinada instrução do código, clicando ao lado do numero de uma linha do código. Aparecerá uma bola azul ao lado do número da linha. Pode adicionar tantos breakpoints quantos queira. 77 | 3. Uma vez o código escrito, premir o ícon Play ![](start_debug.png) . 78 | * O código executará até ao primeiro breakpoint onde a execução será interrompida. 79 | * Na barra lateral esquerda, em baixo, poderá ver as variáveis existentes e seus valores 80 | 4. Os comandos de controlo do debugger são: 81 | * ![](next_breakpoint.png) correr até ao próximo breakpoint, ou até ao fim se não houver mais breakpoints (F5). 82 | * ![](next_step.png) executar a próxima instrução (F10) 83 | * ![](skip_step.png) pula o passo atual 84 | * ![](stop.png) parar (Shift + F5) 85 | 86 | ## Exercício 2 87 | Crie um novo replit (usando o precimento do Fork como foi feito anteriormente) com o seguinte código: 88 | ``` 89 | #include 90 | int main (void) 91 | { 92 | /* Declaracao de dados */ 93 | int centenas; 94 | int dezenas; 95 | int unidades; 96 | int numero; 97 | 98 | /* Processamento e apresentação de resultados */ 99 | centenas = 3; 100 | dezenas = 5; 101 | unidades = 2; 102 | 103 | printf("Este programa congrega, num numero, %d centenas, %d dezenas e %d unidades\n", centenas, dezenas, unidades); 104 | 105 | numero = centenas*100+dezenas*10+unidades*1; 106 | 107 | printf("Resultado: %d\n", numero); 108 | return 0; 109 | } 110 | ``` 111 | 112 | Faça os seguintes passos: 113 | * Insira um breakpoint na declaração da variável centenas. 114 | * Corra o debugger. 115 | * veja o valor de todas as variáveis. Os valores são espectáveis? 116 | * Execute linha a linha para ver o que acontece na zona de variáveis. 117 | 118 | ### Exercício 3 119 | Crie um novo replit (usando o precimento do Fork como foi feito anteriormente) e insira o seguinte código 120 | ``` 121 | #include 122 | int main() 123 | { 124 | Char c = 'r' 125 | short j = 127; 126 | int k 32767; 127 | 128 | printf("c= %c\n", c); 129 | c=C+1; 130 | Printf("c= %c\n, c); 131 | c=c+1; 132 | printF("c= %c\n", c); 133 | printf("j= %d\n", j); 134 | j=j-1; 135 | printf("j= %d\n", j); 136 | j++; 137 | printf("j= %d\n", j); 138 | printf("k= %d\n", k); 139 | k -=4; 140 | printf("k= %d\n", k); 141 | k = k+5; 142 | printf("k= %d\n", k); 143 | printf("Valores finais:\n\tc = %c\n\tj = %d",c,j); 144 | printf("\n\tk = %d\n\n", k); 145 | printf("y= %d\n", y); 146 | return 0; 147 | } 148 | ``` 149 | 1. No editor, vários identificadores estão sublinhados a vermelho. É o editor a indicar que existe um erro nessa instrução. 150 | 2. Corrija todos os erros sintácticos do programa, pois o programa no estado atual não compila. 151 | 3. Execute com o debugger, verificando instrução a instrução o que acontece às variáveis. 152 |   153 | ### Exercício 4 154 | Examine o programa seguinte para calcular a média de avaliação contínua: 155 | ``` 156 | #include 157 | int main() 158 | { 159 | int notaTeste1 = 15, notaTeste2 = 15, notaTeste3 = 17; 160 | double media; 161 | 162 | media = (notaTeste1 + notaTeste2 + notaTeste3)/3; 163 | printf("Nota final : %f valores\n", media); 164 | return 0; 165 | } 166 | ``` 167 | 168 | 1. Compile, corra o programa e examine a sua saída. Concorda com o resultado? O que terá acontecido? 169 | 2. Substitua a instrução do cálculo da média pela instrução seguinte e observe o que é escrito pelo programa. 170 | media = (notaTeste1 + notaTeste2 + notaTeste3)/3.0; 171 | 3. Na instrução printf substitua %f por %3.0f e observe o resultado. 172 | 4. Na instrução printf substitua %f por %3.2f e observe o resultado 173 | 174 | 175 | ### Exercício 5 176 | O programa seguinte usa o tipo de dado elementar short: 177 | ``` 178 | # include 179 | int main() 180 | { 181 | short valor= 32; 182 | int tamanho; 183 | 184 | tamanho = sizeof(valor); 185 | 186 | printf("Um short int : %d\n",valor); 187 | printf("espaco de memoria ocupado: %d bytes\n", tamanho); 188 | return 0; 189 | } 190 | ``` 191 | 1. Compile e execute o programa. O que aparece escrito no monitor? 192 | 2. Edite o programa e altere o valor 32 para um outro valor inteiro relativamente baixo, digamos 100. Compile e corra o programa. 193 | 3. Altere o valor para 90000 e tente compilar o programa. O que é que acontece? Porquê? 194 | 4. Edite o programa e altere a palavra “short” para “int”. Compile e corra o programa. Qual a diferença entre esta e a alínea anterior? 195 | 196 | ## Exercício 6 197 | O programa seguinte usa o tipo de dado elementar float: 198 | ``` 199 | #include 200 | int main() 201 | { 202 | float valor= 900.25; 203 | int tamanho; 204 | 205 | tamanho = sizeof(valor); 206 | printf("Um float : %f\n",valor); 207 | printf("espaco de memoria ocupado: %d bytes\n", tamanho); 208 | return 0; 209 | } 210 | ``` 211 | 1. Compile e execute o programa. O que aparece escrito no monitor? 212 | 2. O que irá aparecer no monitor se alterar o especificador de formato de %f para %E. 213 | 3. E se alterar para %e? 214 | 215 | ## Exercício 7 216 | O programa seguinte usa o tipo de dados elementar char: 217 | ``` 218 | #include 219 | int main() 220 | { 221 | char ch = 'A'; 222 | printf("Insira letra de A a Z:"); 223 | scanf("%c", &ch); 224 | printf("Um char : %c\n", ch); 225 | printf("Outro char : %c\n", ch + 32); 226 | printf("O carater %c tem o codigo ASCII %d\n", 100, 100); 227 | return 0; 228 | } 229 | ``` 230 | 1. Compile e execute o programa. O resultado é o espectável, se inseres 'A', imprime o carater 'A' e seu código ASCII? Corrija o erro. 231 | 2. Troque o 'A' por 'Z' compile e corra o programa. 232 | 3. O que irá aparecer no monitor se alterar o especificador de formato de %c para %d. (Nota: o código ASCII do carácter ‘Z’ é 90) 233 | 234 | 274 | -------------------------------------------------------------------------------- /comandos_shell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/comandos_shell.png -------------------------------------------------------------------------------- /debugger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/debugger.png -------------------------------------------------------------------------------- /debugger_interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/debugger_interface.png -------------------------------------------------------------------------------- /makefile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/makefile.png -------------------------------------------------------------------------------- /next_breakpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/next_breakpoint.png -------------------------------------------------------------------------------- /next_step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/next_step.png -------------------------------------------------------------------------------- /restart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/restart.png -------------------------------------------------------------------------------- /run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/run.png -------------------------------------------------------------------------------- /showhidden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/showhidden.png -------------------------------------------------------------------------------- /skip_step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/skip_step.png -------------------------------------------------------------------------------- /start_debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/start_debug.png -------------------------------------------------------------------------------- /step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/step.png -------------------------------------------------------------------------------- /step_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/step_in.png -------------------------------------------------------------------------------- /step_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/step_out.png -------------------------------------------------------------------------------- /stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/stop.png -------------------------------------------------------------------------------- /syntaxerror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LP1ULHT/FP1/39402c7a7221e5f9784611e3dbfa93027066e6bc/syntaxerror.png --------------------------------------------------------------------------------