MSc. Marcelo Torres – professortorres.com.br Linguagem de Programação 01 - Introdução à Linguagem C MSc. Marcelo Torres – professortorres.com.br Bibliografia • Schildt, Herbert – C Completo e Total. São Paulo: Pearson, 1997 • ASCENCIO, A, F. G.; DE CAMPOS, E. A. V. Fundamentos da programação de computadores. São Paulo: Pearson, 2008. • DAMAS, L. M. D. Linguagem C. Rio de Janeiro: LTC, 2007. • LOPES, A; GARCIA, G. Introdução à programação - 500 algoritmos. Rio de Janeiro: Campus, 2002. MSc. Marcelo Torres – professortorres.com.br Introdução • Desenvolvida por Dennis Ritchie em 1972, em um PDP11 para recriar módulos do Unix (desenvolvido em assembly). • Em 1983 a ANSI (American National Standards Institute) estabeleceu um padrão para linguagem C. MSc. Marcelo Torres – professortorres.com.br • Linguagem de Nível Médio • Linguagem Imperativa • Linguagem Estruturada • Linguagem Compilada MSc. Marcelo Torres – professortorres.com.br C x C++ • C++ é uma versão estendida e melhorada de C., projetada para suportar programação orientada a objetos. • Como C++ é derivado de C, não é possível programar em C++ sem recorrer a linguagem C. Esta disciplina abordará conceitos referentes à linguagem C++. MSc. Marcelo Torres – professortorres.com.br Os 5 tipos básicos de dados • char um caracter (1 byte) • int número inteiro de 2 bytes (de -32.767 a 32.767) • float número real de 4 bytes, com 6 casas de precisão • double número real de 8 bytes, com 10 casas de precisão • void declara explicitamente que uma função não retorna valor MSc. Marcelo Torres – professortorres.com.br Modificadores de Tipo Básico Exceto void, todos os demais tipos de dados podem ser modificados pelos modificadores a seguir: • signed é o padrão dos inteiros e reais, permitindo atribuir valores menores e maiores que zero (e o próprio zero) • unsigned modifica os inteiros e reais para permitir somente números maiores ou iguais a zero MSc. Marcelo Torres – professortorres.com.br • long duplica a capacidade de um tipo básico de dado – long double (16 bytes) • short reduz pela metade a capacidade de um tipo básico de dado – Short float (2 bytes) MSc. Marcelo Torres – professortorres.com.br Declaração de Variáveis Em C, uma variável é declarada em qualquer ponto do código, colocando o tipo de dado seguido no nome da variável. • int contador – double msg – char ativo MSc. Marcelo Torres – professortorres.com.br • Uma variável pode ser LOCAL, quando declarada dentro de um bloco { } de código ou GLOBAL quando declarada no escopo principal do programa. • Duas ou mais variáveis LOCAIS podem ter o mesmo nome, sem que isto cause erros no programa. • Uma variável LOCAL não pode ter o mesmo nome de uma variável GLOBAL MSc. Marcelo Torres – professortorres.com.br Modificadores de Tipo de Acesso • const define valores que não podem ser modificados ao longo do programa – constantes. – const double pi = 3.141592; • volatile define que uma variável poderá ter seu valor alterado sem que haja uma atribuição explícita (mudanças de valores em ponteiros) – const volatile unsigned int *porta = 0x30; MSc. Marcelo Torres – professortorres.com.br Operadores • • • • • • • • = atribuição - subtração + adição * multiplicação / divisão % módulo (resto da divisão) -- decremento ++ incremento MSc. Marcelo Torres – professortorres.com.br Incremento e Decremento Em C é possível utilizar um atalho para operações de incremento e decremento. • X = X + 1; pode ser convertido em X++; • Y = Y – 1; pode ser convertido em Y--; MSc. Marcelo Torres – professortorres.com.br Operadores Relacionais • • • • • • > maior que >= maior ou igual a < menor que <= menor ou igual a == igual a != diferente de MSc. Marcelo Torres – professortorres.com.br Operadores Lógicos • && AND • || OR • ! NOT C não possui um operador lógico exclusivo para XOR MSc. Marcelo Torres – professortorres.com.br Operador Ternário O Operador ternário substitui certas cláusulas IF-ELSE • EXP ? IF : ELSE – x = 10 – y = x > 9 ? 100 : 200 MSc. Marcelo Torres – professortorres.com.br Operadores de Ponteiro Um ponteiro é um endereço de memória de uma variável. • & devolve o endereço na memória de seu operando – m = &cont; põe o endereço de cont em m • * devolve o valor da variável localizado no endereço referido – q = *m; põe o valor de cont em q MSc. Marcelo Torres – professortorres.com.br Parênteses, Colchetes e Chaves • ( ) Define a precedência de operações • [ ] Define o tamanho de um vetor • { } Define o escopo de um bloco de código MSc. Marcelo Torres – professortorres.com.br Type Cast É possível forçar o tipo de dados de uma expressão através do TYPE CAST • (tipo) expressão – (int) x/2 MSc. Marcelo Torres – professortorres.com.br C Reduzido Existe uma variante de atribuição que reduz a quantidade de código • x = x + 10 x += 10 • y = y * 3 y *= 3 MSc. Marcelo Torres – professortorres.com.br MSc. Marcelo Torres – professortorres.com.br