C Progressivo
()
About this ebook
Related to C Progressivo
Related ebooks
Laboratório Técnico Linguagem C Rating: 0 out of 5 stars0 ratingsProgramação Didática com Linguagem C Rating: 4 out of 5 stars4/5Laboratório Técnico Parte Ii Rating: 0 out of 5 stars0 ratingsProgramação Em Python Rating: 0 out of 5 stars0 ratingsPython Progressivo Rating: 5 out of 5 stars5/5Java Progressivo Rating: 0 out of 5 stars0 ratingsLaboratório Técnico Rating: 0 out of 5 stars0 ratingsAutomatizando Testes de Software Com Selenium Rating: 0 out of 5 stars0 ratingsDesenvolvendo Projetos Programado Em Python Para Raspberry Volume Único Rating: 0 out of 5 stars0 ratingsCurso Pdv Passo A Passo Delphi Com Firedac Rating: 0 out of 5 stars0 ratingsApostila Técnica Linguagem C# Modo Console Rating: 0 out of 5 stars0 ratingsProgramação Java Rating: 4 out of 5 stars4/5Falando Sobre Hardware Rating: 0 out of 5 stars0 ratingsAnálise De Sistemas Vol. 2 Rating: 0 out of 5 stars0 ratingsSketchUp Pro 2014 novidades Rating: 0 out of 5 stars0 ratingsAprenda A Programar Computadores Rating: 0 out of 5 stars0 ratingsLógica De Programação De Computadores Rating: 0 out of 5 stars0 ratingsProgramação Para Internet Rating: 0 out of 5 stars0 ratingsEletrônica Digital, Verilog E Fpga Rating: 0 out of 5 stars0 ratingsFundamentos De Programação Java Rating: 0 out of 5 stars0 ratingsC# Introdução A Programação Orientada A Objetos Rating: 0 out of 5 stars0 ratingsProgramando Em Java - Guia Essencial E Prático Rating: 0 out of 5 stars0 ratingsIntrodução Às Redes De Computadores: Modelos Osi E Tcp/ip Rating: 0 out of 5 stars0 ratingsAnálise De Sistemas V. 6 Rating: 5 out of 5 stars5/5Programação Básica Com Visualg Rating: 0 out of 5 stars0 ratingsDesenvolvimento De Software - Aplicativo Comercial Com C# E Camadas Rating: 0 out of 5 stars0 ratingsAlgoritmos Em C Rating: 0 out of 5 stars0 ratingsAlgoritmos E Lógica De Programação Com Python Rating: 0 out of 5 stars0 ratingsPetsishop - Passo A Passo Rating: 0 out of 5 stars0 ratingsApp Inventor: Seus primeiros aplicativos Android Rating: 0 out of 5 stars0 ratings
Mathematics For You
Matemática divertida e curiosa Rating: 5 out of 5 stars5/5Matemática com aplicações tecnológicas - Volume 3: Cálculo II Rating: 5 out of 5 stars5/5Sou péssimo em matemática Rating: 0 out of 5 stars0 ratingsExcel Para Iniciantes Rating: 0 out of 5 stars0 ratingsDeus é Matemático Rating: 0 out of 5 stars0 ratingsMatemática Aplicada Aos Games Rating: 0 out of 5 stars0 ratingsCálculo I Rating: 0 out of 5 stars0 ratingsMatemática financeira Rating: 4 out of 5 stars4/5Os Segredos Da Mega Sena Rating: 5 out of 5 stars5/5Estratégias E Macetes Matemáticos Para Concurseiros Rating: 0 out of 5 stars0 ratingsHistória bizarra da matemática Rating: 5 out of 5 stars5/5Deus é matemático? Rating: 4 out of 5 stars4/5Matemática com aplicações tecnológicas - Volume 2: Cálculo I Rating: 0 out of 5 stars0 ratingsMatemática com aplicações tecnológicas - Volume 1: Matemática básica Rating: 3 out of 5 stars3/5Raciocínio Lógico Para Concursos Rating: 0 out of 5 stars0 ratingsCaderno De Questões | Matemática Rating: 5 out of 5 stars5/5Física Simples E Objetiva Rating: 0 out of 5 stars0 ratingsCaderno De Exercícios De Matemática Do 8º Ano Rating: 0 out of 5 stars0 ratingsTestando Componentes Eletrônicos Rating: 0 out of 5 stars0 ratingsA Cabala Da Pirâmide Invertida Rating: 4 out of 5 stars4/5Os Segredos Da Lotofácil Rating: 3 out of 5 stars3/5Guia De Química Para O Enem Rating: 0 out of 5 stars0 ratingsCaderno De Exercícios De Matemática Do 9º Ano Rating: 0 out of 5 stars0 ratingsMatemática Básica Para Concursos Rating: 0 out of 5 stars0 ratingsJava Progressivo Rating: 0 out of 5 stars0 ratingsOs Segredos Das Loterias Rating: 0 out of 5 stars0 ratingsSegurança Da Informação Descomplicada Rating: 0 out of 5 stars0 ratingsJogos Lúdicos No Ensino De Química Rating: 0 out of 5 stars0 ratingsAs Maravilhosas Utilidades da Geometria: da Pré-História à era Espacial Rating: 0 out of 5 stars0 ratings
Reviews for C Progressivo
0 ratings0 reviews
Book preview
C Progressivo - Francisco J M Matos
Apostila
C
Progressivo
Figura48www.cprogressivo.net
Sobre o livro C Progressivo
Antes de mais nada, duas palavrinhas: parabéns e obrigado.
Primeiro, parabéns por querer estudar, aprender, por ir atrás de informação. Isso é cada vez mais raro hoje em dia.
Segundo, obrigado por ter adquirido esse material em www.cprogressivo.net
Mantemos neste endereço um website totalmente voltado para o ensino da linguagem de programação C.
O objetivo dele é ser bem completo, ensinando praticamente tudo sobre C, desde o básico, supondo o leitor um total leigo em que se refere a absolutamente tudo sobre computação e programação.
Ele é gratuito, não precisa pagar absolutamente nada. Aliás, precisa nem se cadastrar, muito menos deixar e-mail ou nada disso. É simplesmente acessar e estudar.
E você, ao adquirir esse livro, está incentivando que continuemos esse trabalho.
Confiram nossos outros trabalhos:
www.programacaoprogressiva.net
www.javaprogressivo.net
www.pythonprogressivo.net
www.htmlprogressivo.net
www.javascriptprogressivo.net
www.excelprogressivo.net
www.cmmprogressivo.net
Certamente, seu incentivo $$ vai nos motivar a fazer cada vez mais artigos, tutoriais e novos sites!
Este livro é composto por todo o material do site. Assim, você pode ler no computador, no tablet, no celular, em casa, no trabalho, com ou sem internet, se tornando algo bem mais cômodo.
Além disso, este livro contém mais coisas, mais textos e principalmente mais exercícios resolvidos, de modo a te oferecer algo mais, de qualidade, por ter pago pelo material.
Aliás, isso não é pagamento, é investimento. Tenho certeza que, no futuro, você vai ganhar 10x mais, por hora trabalhada, graças ao conhecimento que adquiriu aqui.
Sumário
Para os iniciantes ou que querem aprender bem mesmo, que siga os seguintes tutoriais na ordem que é colocada.
Para ler um tutorial avulso, a gente assume que você tenha lido ou tenha os conhecimentos de todos os artigos anteriores.
Estude no seu próprio tempo, sem pressa, com calma, leia e releia quantas vezes forem necessárias.
Qualquer dúvida, estamos lá no site a disposição para dúvidas e debates.
Se preferir, também temos nosso grupo no Facebook:
Programação Progressiva
Bons estudos!
Índice
Sobre o livro C Progressivo 2
Sumário 3
Como começar a programar 12
Básico 14
O necessário para programar em C 14
Ferramentas Necessárias para programar em C 14
Que programa escolher para programar em C 15
Dev-C++: desatualizado e com muitos erros 15
Microsoft Visual Studio: bom, poderoso e pago 15
Code::Blocks: gratuito, leve, open source e cross plataform 16
Porque usaremos o Code::Blocks no curso de Programação C 18
Como começar a programar em C: baixando o necessário para a Apostila C Progressivo 18
Criando e compilando seu primeiro programa na Linguagem C 19
Como criar e compilar um programa em linguagem C 19
Código comentado do nosso primeiro programa em C 22
Como criar seu primeiro programa em C 22
Hello world em C 22
O que é e para que serve #include 23
O que é e para que serve int main(void) { } 24
O que é e para que serve printf(Meu primeiro programa - C Progressivo!\n
); 24
\n: New line, adicionando uma linha em branco 25
A função printf() e alguns caracteres especiais 26
Caracteres Especiais 26
Por que o C não exibe esses caracteres? 27
Como exibir o caractere \ 27
Sinais sonoros e outros caracteres especiais 28
Carriage return: \r 28
Tabulação horizontal (TAB): \t 29
Sons: \7 e \a 29
Como comentar seus códigos em C - Comentários e Delimitadores 30
Comentando códigos em C - Usando // 30
Como usar os delimitadores /* */ em linguagem de programação C 32
Use comentários com moderação 34
O tipo de dado inteiro (int) na Linguagem C 34
Como declarar variáveis inteiras na linguagem C 34
Como imprimir um número inteiro na tela, usando a linguagem C 35
Como inicializar variáveis inteiras na linguagem C 36
Modificadores do tipo inteiro - short, long, signed e unsigned 38
O tamanho que cada variável em C pode ocupar em memória 38
Tendo um maior controle sobre o tamanho dos inteiros - short e long 40
Controlando a faixa de valores dos inteiros através do sinal: signed e unsigned 40
Quando usar short, long, signed e unsigned 41
Quando usar o short int em C 42
Quando usar o long int em C 42
Quando usar unsigned int em C 42
Exercício: 42
Os tipos float e double - números decimais (ou reais) em C 43
O que são e para que servem os tipos float e double 43
Como declarar e inicializar variáveis do tipo float e double na linguagem C 44
Qual a diferença entre float e double 45
Imprimindo números reais float e double na tela através do printf 46
Como imprimir números na forma exponencial em C 47
O tipo char 49
Como declarar o tipo char em C 49
Como inicializar variáveis char em C 50
Como imprimir caracteres e textos na tela 50
A tabela ASCII em C 51
A função scanf - recebendo números do usuário 54
Recebendo números inteiros com a função scanf 54
Exemplo de código- Como usar a função scanf() 55
Recebendo mais de um número dentro de uma única scanf 56
Recebendo números reais ou decimais com a função scanf 56
Recebendo letras do usuário - As funções scanf, getchar, fgetc e getc 57
Recebendo caracteres em C através da função scanf() 58
Recebendo caracteres em C através da função getchar() 58
Recebendo caracteres em C através das funçoes fgetc e getc 59
Buffer: o que é, como limpar e as funções fflush e __fpurge 60
O problema de usar scanf, getchar, getc e fgetc para receber caracteres em C 61
Limpando o buffer em C: fflush e __fpurge 62
Operações matemáticas em C - Soma, subtração, multiplicação, divisão e módulo (ou resto da divisão) e precedência dos operadores 64
Símbolos matemáticos em C 65
O que é módulo ou operador resto da divisão 66
Precedência dos operadores matemáticos em C 67
Usando parênteses para evitar confusão com a precedência 67
Atalhos com símbolos matemáticos em C: += , -=, *=, /= e %= 68
Fazendo contas com o valor antigo da variável 69
Atalhos matemáticos: += , -= , *= , /= e %= 70
+= 70
-= 70
*= 71
/= 71
%= 71
Sistema binário e Valores lógicos true ou false 71
Computadores e o sistema binário 72
Valores lógicos: true ou false, 1 ou 0 72
Exemplo prático dos valores lógicos em computação 73
Operadores Lógicos E (&&), OU (||) e de Negação (!) 73
Operador lógico 'E' em linguagem C: && 74
Operador lógico 'OU' em linguagem C: || 74
Operador lógico de negação em linguagem C: ! 75
Exercícios básicos sobre a linguagem C 75
Testes condicionais e controle de fluxo em C 78
O teste condicional IF ELSE 79
O que é, para que serve e como usar o teste condicional IF em C 80
Exemplo de código: Condição sempre verdadeira 80
Exemplo de condição: Condição sempre falsa 81
O que é, para que serve e como usar o ELSE em C 81
Exemplo de código: rodando o ELSE 82
Exercício de C: 83
Fazendo testes e comparações - operador de igualdade (==), maior (>), menor (=), menor igual (<=), de diferença (!=) e de módulo, ou resto da divisão (%) 84
Testar e comparar, testar e comparar...a essência da programação 84
O operador de igualdade em C: == 85
Exemplo de código: 85
O operador maior que em C: > 86
O operador menor que em C: < 87
O operador maior igual a em C: >= 88
Exemplo de código: 88
O operador menor igual a em C: <= 90
Exemplo de código: 90
O operador diferente de em C: != 91
Exemplo de código: 91
O operador módulo ou resto da divisão em C: % 92
Exemplo de código: 93
Erro comum de iniciantes em programação C 93
Exercícios sobre operadores de comparação em C: 94
Questões sobre IF e ELSE 95
Exercícios sobre IF e ELSE em C 95
Operadores de Incremento (++) e Decremento (--) - Diferença entre a=b++ e a=++b 115
Contando em linguagem C 115
Somando e Subtraindo variáveis em C 116
Diferença entre os operadores entre a=++b e a=b++ 118
O que é e como usar o laço WHILE em C 120
Repetir e repetir: o que são e para que servem os laços em C 120
O laço while: definição e sintaxe 121
Exemplo comentado de código: 122
Programa em C que conta de 1 até 10 usando o laço while 122
Exemplo comentado de código: 123
Crie um aplicativo em C que peça ao usuário o primeiro elemento de uma P.A, a razão da P.A e o número de elementos a serem exibidos. 123
Exemplo comentado de código: 124
Questões sobre o laço WHILE em C 126
Exercícios sobre o laço WHILE 126
Questões resolvidas sobre laço WHILE em C 129
O laço FOR: o que é, para que serve e como usar o FOR - Cast em C: o que é e como usar o Casting 140
O que é o laço FOR 140
A sintaxe do laço FOR: como usar o for 141
Exemplo: Contando de 1 até 10 com o laço FOR 141
Exemplo: 142
Contagem regressiva de 10 até 1, usando o laço FOR 142
Exemplo: Contagem progressiva e regressiva no mesmo laço FOR 143
Exemplo: 143
Exemplo: 144
Questões sobre o laço FOR 146
Exercícios sobre o laço FOR 146
Soluções das questões sobre o laço FOR 148
Os comandos CONTINUE e BREAK: pausando e alterando o fluxo de laços e testes condicionais 155
O comando BREAK em C: como usar 155
Exemplo de código comentando em C 155
Exemplo de código comentado em C 157
O comando CONTINUE em C: como usar 158
O teste condicional SWITCH 160
SWITCH em C: o que é e como usar o comando 160
Exemplo de código: 161
O switch sem o break 162
Exemplo: 164
O que é o laço DO WHILE 167
Para que serve o laço DO WHILE em C 167
Como declarar e usar o laço DO WHILE em C 167
Exemplo de uso do laço DO WHILE: Criando um MENU 168
Exercício de C: 170
Criando uma calculadora em C 171
Como criar uma calculadora em C 171
A lógica de uma calculadora na linguagem C 172
Exercícios sobre testes condicionais e laços 175
Soluções 177
Funções em C 188
O que são funções, para que servem e como usá-las em C 189
O que é uma função em linguagem C 189
Para que serve uma função em C? 189
Como declarar funções em C 191
Exemplo de código: 191
Criando um menu usando funções em C 193
Exemplo de código em C 193
Argumentos e Parâmetros de funções em C - Funções aninhadas 195
O que são e como usar parâmetros e argumentos em C 195
Exemplo de código 196
Funções aninhadas - Invocando uma função dentro de outra função 199
O comando return - obtendo resultados das funções 203
O que é e como usar o comando return em C 203
Exemplo de código C 204
Exemplo de código 205
Variáveis Locais - Protótipo de uma função em C 206
Variáveis Locais em C 206
Como alterar o valor de uma variável passada como argumento 208
Protótipos de uma função em C: o que é e como declarar 209
Gerando números aleatórios em C: rand, srand e seed 211
Números aleatórios em C 211
A função rand() - Gerando números aleatórios 212
Alimentando a rand() com a srand() : seed 213
Escolhendo uma faixa de números aleatórios em C 213
Como criar um Jogo em linguagem C 214
Jogo em C: Adivinhe o número que o computador sorteou 215
Como criar um jogo simples em C 215
Recursão 219
Recursividade em C 219
Exemplo de código usando Recursão 219
Exemplo de código usando recursão em C 221
Exercícios sobre funções em C 223
Soluções 225
Programa que calculas raízes de equação do segundo grau, até as complexas, em C 225
Vetores 231
O que são vetores, como declarar e quando usar 232
O que é um vetor em C... E para quê serve? 232
Como declarar um vetor em C 232
A contagem dos índices começa sempre do 0 233
Como usar acessar os elementos de um vetor em C 233
Inicializando vetores – Vetor de caracteres e Lixo 238
Inicializando vetores 238
O que é o Lixo, em linguagem C 239
Não use números, use constantes: const e #define 241
Por que se deve evitar usar números em programação C 241
Definindo e usando constantes em C 242
Vetores multidimensionais (Matrizes) em C: vetor de vetores 244
Vetores multidimensionais, ou Matrizes: o que são e para quê servem 244
Como declarar e trabalhar com Matrizes em C 244
Exemplo de código C: Criar e exibir uma matriz 3x3 247
Exemplo 2: Como calcular o traço de uma matriz em C 248
Como passar vetores, ou arrays, e Matrizes (vetores multidimensionais) para funções em C 250
Como passar um vetor parar uma função em C 250
Como passar matrizes (vetores multidimensionais) para funções 252
Exemplo de código: Como preencher, exibir uma matriz e seu traço, passando a matriz para uma função em C 252
Passagem por Referência - Como copiar vetor e matriz em C 254
Vetor e Matriz: Passagem por referência 254
O que é uma referência, em linguagem C? 254
Como copiar vetores e matrizes em C 255
Exemplo de código: Como copiar uma matriz em linguagem C 257
Exercícios sobre Vetores e Matrizes em C 259
Exercícios sobre vetores (arrays) e Matriz em C 259
Jogo da Velha em C 261
O Famoso Jogo da Velha 261
Como jogar o Jogo da Velha 261
Recomendações 262
Código completo do Jogo da Velha em C 263
Lógica do Jogo da Velha em C 269
As funções do Jogo da Velha em C 269
Ponteiros 273
Introdução ao uso dos ponteiros - Endereços de memória 274
O que são ponteiros em C ? 274
Como saber o endereço de memória de uma variável: & 275
Exemplo de código: Vendo o valor e endereço de uma variável 276
A função sizeof() e os blocos vizinhos de memória 278
Quando cada variável ocupa em memória: A função sizeof() 278
Exemplo de código: Como saber quantos bytes cada variável ocupa em memória 279
Exemplo: Mostrar o endereço e número de bytes que cada variável ocupa 279
Endereço de um bloco de variáveis 280
Exemplo de código: Mostrando as posições dos blocos de variáveis 281
Como declarar, inicializar e usar ponteiros em C - A constante NULL 283
Como declarar ponteiros em C 283
Ponteiros e Vetores em C 284
Exemplo de código em C 285
Como inicializar um ponteiro em C – A constante NULL 286
Exemplo de código: Como usar ponteiros 287
Variáveis apontadas - A Passagem por Referência em C 288
Obtendo o valor apontado pelo ponteiro: * 288
Exemplo de código: Mostrando o valor das variáveis apontadas por ponteiros 288
O que é e como fazer a Passagem por referência em C 289
Exemplo de código: Passagem por referência em C 290
Exemplo de código: Trocar o valor de dois números em C 291
Operações Matemáticas com Ponteiros em C 293
Incremento, Decremento e Comparando ponteiros em C 293
Exemplo de código: Calcular os termos de uma P.A usando Ponteiros em C 294
Strings 296
Introdução as strings 297
O que são Strings em linguagem C 297
O caractere especial delimitador de strings: \0 298
Como declarar e inicializar Strings em C 298
Como inicializar strings em C 299
Lendo e Escrevendo Strings em C 301
Strings em C: %s 301
Como ler strings com a função scanf() 301
Exemplo: Programa que pede o nome e sobrenome em C 302
Como receber strings do usuário com a função gets() 303
Como exibir strings com a função puts() e printf() 303
Exemplo de código: Programa em C que pede os dados cadastrais completos 304
Problemas com a gets() - A função fgets() 305
Que função usar para ler strings, então? 306
Como criar uma biblioteca em C 307
Por que criar uma biblioteca / header (.h) em C? 307
Como criar uma biblioteca / header (.h) em C 307
A biblioteca string.h e suas funções 309
A biblioteca string.h e suas funções: quais existem, para quê servem e como usá-las 309
Funções de exame de strings: 310
strlen: size_t strlen( const char *str ); 310
strcmp: int strcmp( const char *lhs, const char *rhs ); 310
strncmp: int strncmp( const char *lhs, const char *rhs, size_t count ); 310
strchr: char *strchr( const char *str, int ch ); 310
strrchr: char *strrchr( const char *str, int ch ); 310
strspn: size_t strspn( const char *dest, const char *src ); 310
strcspn: size_t strcspn( const char *dest, const char *src ); 311
strpbrk: char* strpbrk( const char* dest, const char* str ); 311
strstr: char *strstr( const char* str, const char* substr ); 311
Funções de manipulação de strings 311
strcpy: char *strcpy( char *dest, const char *src ); 311
strncpy: char *strncpy( char *dest, const char *src, size_t count ); 311
strcat: char *strcat( char *dest, const char *src ); 311
strncat: char *strncat( char *dest, const char *src, size_t count ); 311
memset: void* memset( void* dest, int ch, size_t count ); 311
memcpy: void* memcpy( void* dest, const void* src, size_t count ); 312
memcmp: int memcmp( const void* lhs, const void* rhs, size_t count ); 312
memchr: void* memchr( const void* ptr, int ch, size_t count ); 312
Como implementar as funções da biblioteca string.h 313
Exercícios resolvidos sobre strings em C 313
int strlen(char *str) - Calcule quantos caracteres uma string possui 313
char *strcpy(char *dest, char *orig) - Copie a string orig para a string dest 314
char *memcpy(char *dest, char *orig, int n) - Copia os 'n' primeiros termos da string orig para a dest 315
int *memcmp(char *str1, char *str2, int n) - Diz se os 'n' primeiros termos de uma string é maior, menor ou igual aos 'n' primeiros termos da outra string 315
Exercícios sobre Strings 317
Structs 318
O que são, para que servem e onde são usadas as Structs 319
Para que serve uma struct em C 319
O que é uma struct em C 320
Onde as structs em C são usadas 321
Como declarar uma struct em C 322
Como declarar uma struct em C 322
O tipo struct 322
Como acessar, alterar e ler os elementos de uma struct em C 324
Como escrever e ler elementos de uma struct em C 324
Exemplo: Como declarar, preencher e acessar elementos de uma struct em C 324
typedef: Como 'declarar' seus próprios tipos 327
O que é typedef 327
Como declarar tipos com typedef 327
Como usar typedef para structs 328
Exemplo: Como declarar, preencher e acessar elementos de uma struct em C 329
Como enviar uma struct para uma função 331
Como passar uma struct por argumento para uma função em C 331
Exemplo de código C: Passando uma struct para função 332
Passando structs por referência para funções - O operador -> 334
Como alterar uma struct em uma função 334
O operador -> 336
Exemplo: Alterando e exibindo structs através de funções em C 337
Exercícios sobre structs em Linguagem C 339
Alocação dinâmica de memória 340
O que é e para que serve a Alocação Dinâmica de memória em C 341
A alocação estática e seus problemas 341
Quanto de memória devo usar? 342
O que é alocação dinâmica de memória em linguagem C 343
Onde a alocação dinâmica é usada 344
A função malloc - Como alocar memória na linguagem C 345
Como usar a função malloc da stdlib.h 345
Dica: usar sizeof() 347
Exercício: Calculando a média de qualquer quantidade de números com malloc() 348
A função free() - Liberar e evitar vazamento de memória 349
Memory leak (vazamento de memória) em linguagem C 349
free(): A função que libera memória 351
A importância do bom gerenciamento de memória 352
Alocação de memória, free() e segurança 353
Exercício resolvido: Usando malloc() e free() 354
A função realloc(): realocando memória dinamicamente e a calloc() 358
Problemas com a malloc() 358
A função realloc(): O que é, para que serve e como usar 359
Memória não alocada 360
Exemplo de código: Como usar a função realloc() em C 361
A função calloc() 365
Diferença entre calloc() e malloc() 366
Exercícios propostos com calloc() e realloc() 366
Estruturas de dados dinâmicas 368
Listas, Filas, Pilhas e Árvores 368
O que é Estrutura Dinâmica de Dados em Linguagem C 368
O que é uma Lista em C (Lists) 369
Filas em C (Queue) 370
Pilhas em C (Stack) 371
Árvores em C (Tree) 372
Conceitos básicos de uma estrutura dinâmica de dados 372
Listas em C - O que é e como funciona uma List 375
Lista encadeada - O nó 375
Conectando os nós de uma lista 376
Inserindo nó ao final da lista 377
Conectando nós no início da lista 378
Inserindo um nó no meio da lista 379
Excluindo um nó da lista 380
Lista simplesmente encadeada com cabeça em C: Inserindo nós no início e no fim 382
Tipos de Listas em C 382
Lista encadeada com cabeça 382
Como inserir um nó no início da lista 384
Como inserir um nó ao final da lista 384
Como exibir os elementos de uma lista 386
Liberando a memória armazenada para uma lista 387
Código em C de uma lista encadeada 388
Considerações sobre listas em C 392
Exercícios sobre listas 393
Lista simplesmente encadeada: Retirando nós no início e no fim 394
Retirando nós da uma lista em C 394
Retirando um nó do início da lista 394
Como excluir um elemento ao final da lista 395
Código C da uma Lista encadeada 397
Exercício de C 402
Lista simplesmente encadeada: Inserindo e retirando nós de qualquer posição 402
Como criar uma lista completa em C 402
Alterações em nossa lista 403
Como inserir nós em qualquer posição da lista 403
Como retirar estruturas de uma lista 405
Código completo de uma Lista em C 406
Pilhas (Stack) em C - O Que é e Como Implementar 415
Pilha em C - O Que É e Para Que Serve 415
Como Programar Uma Pilha em C 416
Struct e Cabeçalhos de Funções 416
Função main() 416
Função menu() e opcao() 417
Função inicia() 417
Função vazia() 417
Função aloca() 417
Função libera() 418
Função exibe() 418
Função push() 418
Função pop() 419
Código Completo De Uma Pilha em C 420
Considerações sobre a Estrutura de Dados Dinâmica Pilha 425
Filas em C - Como Programar 426
Filas em C - Tutorial de Queue 426
Filas em C - Como Programar a Estrutura de Dados 427
Função main(), opcao() e menu() 427
Função aloca() e inicia() 427
Função vazia() 428
Função insere() 428
Função retira() 428
Função exibe() 429
Função libera() 430
Fila em C - Código Fonte Completo 430
Arquivos 435
Arquivos (Files) em C 436
Dados temporários x Dados permanentes 436
Arquivos em C - O que são e para que servem 437
Comandando um Sistema Operacional através do uso de Arquivos 438
Operações com arquivos: Modos de abertura (FILE e fopen), fechamento (EOF, fclose e fcloseall), modo texto e binário 440
O que são arquivos 440
Modo texto e binário 441
Como abrir um arquivo: A função fopen() e o ponteiro FILE 441
Nome de um arquivo 442
Modos de abertura: read (r), write (w) e append(a) 443
read(r) - Leitura de arquivo 443
r 443
r+ 443
rb 443
write(w) - Escrita em arquivo 444
w 444
w+ 444
wb 444
append(a) - Escrevendo ao final do arquivo (anexando) 444
a 444
a+ 444
ab 444
EOF (end of file), final do arquivo - Fechando arquivos com fclose() e fcloseall() 445
Erros em abertura de arquivos 445
Escrevendo em arquivos - As funções fputc(), fprintf() e fputs() 447
Arquivos padrões - Standard stdin, stdout e stderr 447
fputc() - Como escrever um caractere em um arquivo 448
Exemplo de código - Escrevendo um caractere em um arquivo 449
Exemplo de código - Adicionando caractere com o modo a
(append) 450
fprintf() - Escrevendo textos (strings) em arquivos 452
Exemplo de código - Armazenando notas, calculando a média e escrevendo no arquivo 452
Exercício sobre escrita de dados em C 453
Lendo arquivos em C: As funções fgetc, fscanf e fgets 454
fgetc() - Como ler caracteres de um arquivo 454
Exemplo de código C - Programa que lê o conteúdo de um arquivo, caractere por caractere 455
Exercício resolvido - Contando o número de linhas de um arquivo 456
fscanf() - Lendo uma entrada formatada 457
Exemplo de código - Como usar a fscanf 458
Exemplo de código - Nomes, notas e média 459
fgets() - Capturando linha 460
Como começar a programar
Sempre que alguém fala em programador, cientista da computação, engenheiro de software e coisas do tipo, no imaginário popular vem logo a imagem de alguém nerd, gênio ou vulgo CDF (como chamamos aqui no nordeste).
Não, não precisa ser um gênio pra isso.
Não precisa tirar só 10 na escola pra aprender a programar
Não precisa ir pra faculdade pra aprender computação
Aliás, sabia que muito dos gênios desse ramo, abandonaram a faculdade?
Muitos donos de empresa de tecnologia, começaram programando, estudando sozinho e hoje são muito bem sucedidos, e alguns só tem ensino médio?
Pois é, se essa galera, antigamente, sem internet, sem Youtube, sem livro e PDF, aprenderam, não tenha dúvidas: você pode e vai aprender também.
Não precisa ser inteligente nem ter conhecimento prévio algum.
Mas depois de aprender a programar, se prepare: sua mente vai mudar completamente.
O raciocínio muda.
A criatividade muda.
Sua lógica muda.
Sua mente muda totalmente, é algo incrível.
Mas vamos te dar algumas orientações, talvez não goste de algumas, mas te falo com sinceridade e mando a real na lata:
1. Você precisa se esforçar. Programar é simples, mas não simplório. Vai precisar ler, reler, pensar, pensar de novo, tentar e tentar. Isso, as vezes, é desgastante.
2. Precisa arranjar tempo. Muitos que querem programa estão na escola, faculdade, outros até trabalham e tem família. Você vai precisar de tempo. Boa parte do que aprendi, foi estudando em ônibus (não tinha smartphone, imprimia mesmo os livros e ia lendo no ônibus).
3. Precisa de sacrifícios. As vezes da vontade de ver uma série na Netflix, mas vá estudar. As vezes dá vontade de ficar dando refresh no Instagram e não fazer nada, mas estude. Você vê um vídeo no Youtube e ele te indica 20 outros legais, eu sei como é, mas estude. Se você continuar agindo como todos, se esforçando como todos, gastando seu tempo como todos...vai ser como todos. Quer algo diferente? Precisa agir diferente, amigão.
4. Tente de novo. As vezes, você vai ver exercícios aqui que você vai ler, tentar e vai falhar. No começo, vai ser sempre. Outras vezes, vai tentar tentar...e nada. Dá vontade de ver a resposta, a solução, mas tente mais. Dê uma volta, saia, vá passear, comer algo, namorar e depois tente novamente com a cabeça fresca. Programação é isso, todo dia você vai precisar solucionar algo, tem que quebrar a cabeça, até chorar em posição fetal no banheiro. FAZ PARTE. Só assim se vira um bom programador, ok? Tentando de novo.
5. Você vai se frustrar. Você vai passar 1 mês em um projeto, vai suar, quebrar a cabeça e resolver tudo em 5 mil linhas. Depois descobre que um filho de uma mãe resolveu de maneira melhor, mais rápida, completa e eficiente em 500 linhas. Você ficar pistola, com vontade de desistir e com vontade de decorar uns livros de leis e artigos pra passar num concurso e nunca mais ter que estudar e quebrar a cabeça. Mas se parar pra estudar, ver a solução e como funciona a mente dos outros, você vai ficar cada vez mais e mais fodástico.
6. Você vai sempre precisar estudar. Não importa o quanto estude, vai sempre precisar estudar. Sempre tem uma coisa nova pra aprender, algo que ainda não sabe, sempre vai precisar ler uma documentação de alguma API ou alguma dúvida em algum fórum. Faz parte, tem ter que gana e vontade de aprender. Não se admire se estiver trabalhando programando em um empresa e quando chegar em casa tu do que vai querer é...programar naquele seu projeto pessoal.
7. Estude inglês. Não sabe?