620 likes | 960 Views
LTPII - LINGUAGEM “C”. Prof. : Jair Alves Barbosa E_mail: jairab@yahoo.com.br. LINGUAGEM “C”. CONTEÚDO PROGRAMÁTICO. Conteúdo Programático. 1 - Introdução Histórico e Características Básicas Compiladores e Interpretadores Estrutura Básica de um programa “C” Palavras Chaves
E N D
LTPII - LINGUAGEM “C” • Prof. : Jair Alves Barbosa • E_mail: jairab@yahoo.com.br Linguagem C
LINGUAGEM “C” CONTEÚDO PROGRAMÁTICO Linguagem C
Conteúdo Programático • 1 - Introdução • Histórico e Características Básicas • Compiladores e Interpretadores • Estrutura Básica de um programa “C” • Palavras Chaves • Ponto e vírgula, chaves e Comentários • Tipos de Dados ,Identificadores, Constantes e Variáveis • Funções : main, printf, scanf e diretiva #include Linguagem C
Conteúdo Programático • 2 - Operadores e Expressões • Operadores Aritméticos • Operador de Atribuição • Operadores relacionais • Operadores Lógicos • Operadores bit a bit • 3 - Funções de entrada e saída de caracteres • getch, getche, getchar, putchar, gets e puts Linguagem C
Conteúdo Programático • 4 - Instruções de Seleção (condicional) • Comandos if , if-else e if-else-if • if aninhados • Comandos switch e break Linguagem C
Conteúdo Programático • 5 - Instruções de Repetição (laço) • Comando for • Comando while e do-while • Comandos aninhados • Repetições Aninhadas • Comando Continue Linguagem C
Conteúdo Programático • 6 - Funções • Funções simples e variáveis locais • Funções com retorno de valor (comando return) • Conceitos Básicos de Ponteiros • Argumentos e parâmetros • Funções Recursivas • Variáveis externas e estáticas • Definição de Macros e diretiva #define Linguagem C
Conteúdo Programático • 7 - Estrutura de dados homogênea • Matrizes unidimensionais • Matrizes bi-dimensionais ou tri-dimensionais • Matriz como argumento de funções • Strings e funções de manipulação • 8 - Estrutura de dados heterogênea • Definição • Estruturas como argumentos de funções Linguagem C
Conteúdo Programático • 9 - Ponteiros • Operadores de ponteiros • Expressões com ponteiros • Ponteiros e Strings • Matrizes de Ponteiros • Ponteiros de estruturas • Parâmetros como ponteiros • Alocação dinâmica Linguagem C
Conteúdo Programático • 10 - Arquivos • Sistema de entrada e saída bufferizado • Funções fopen(), fputc(), fgetc(), fread(), fwrite(), fclose(), feof(), fseek(),fgets(), fputs(), rewind() e remove() • Entrada padrão (stdin), saída padrão (stdout) e erro padrão (stderr) • funções fprintf() e fscanf() Linguagem C
Bibliografia • Schildt, H., C Completo e Total, Editora Makron Books do Brasil Editora Ltda, 1997, 827p (livro texto). • Evaristo. J., Aprendendo a programar: programando em C, Book Express,2001, 205p • Mizrahi, V. V., Treinamento em Linguagem C, Curso Completo, Módulos 1 (241p) e 2 (273p) , Makron Books do Brasil Editora Ltda,1990 Linguagem C
LINGUAGEM “C” 1 - INTRODUÇÃO Linguagem C
Histórico • Linguagem C foi inventada e implementada por Brian W. Kernighan Dennis Ritchie em um DEC-PDP 11 sobre o S.O. Unix na década de 1970; • Predecessor Linguagem B, de Ken Thompson, que tinha forte influencia da linguagem BCPL, de Martin Richards; • Inicialmente C era fornecida junto com o S.O. Unix, versão 5; Linguagem C
Hístórico • Com os microcomputadores apareceram grande número de implementações de C o que gerava discrepâncias; • Em 1983 o ANSI (American National Standards Institute) estabeleceu um padrão; Linguagem C
Características Básicas • Linguagem de Nível Médio, pois combina elementos de linguagens de alto nível (Basic, Pascal) com a funcionalidade da linguagem assembler (instruções de máquinas) Permite manipulação de bits, bytes e endereços; • Linguagem Portável (Portabilidade); • C não efetua nenhuma verificação em tempo de execução (respons. do programador) Linguagem C
Características Básicas • As primeiras implementações de C não consistiam parâmetros e argumentos, já o padrão ANSI introduziu o conceito de protótipos de funções; • Possui 32 palavras chaves (27 originais de seus criadores e 5 do comitê ANSI) (Obs.: Basic possui mais de 100); • C é estruturada, apesar de não permitir a criação de funções dentro de funções; Linguagem C
Características Básicas • Principal componente estrutural de C é a função (blocos de construção); • Tem o conceito de bloco de código ou bloco de instruções, que é um grupo de comandos de programa conectado logicamente e tratado como uma unidade; • if (a <b) • { • printf(“valor inválido de a (%d) menor que b (%d) tente outro\n”,a,b); • scanf (“%d”,&a); • } Linguagem C
Características Básicas • C é uma linguagem para programadores, dá ao programador o que ele quer: poucas restrições, poucas reclamações, estruturas de blocos,funções isoladas e um conjunto de palavras chaves ; • Inicialmente C foi usada para S.O, compiladores, interpretadores, planilhas, SGBD, hoje é usada na construção de sistemas comerciais, sistemas de controle, etc. (portabilidade, código compacto e rápido); • Atualmente em grande crescimento devido ascensão do S.O Linux; Linguagem C
Compiladores e Interpretadores • Qualquer linguagem de programação pode ser compilada ou interpretada; • Compiladores e interpretadores são programas que operam sobre o código-fonte; • Interpretador lê o código-fonte linha por linha e executa-a; • Compilador lê todo o código-fonte e converte-o para código-objeto; Linguagem C
Compiladores e Interpretadores • Código-objeto não é executável, precisa ser utilizado um linkeditor para torná-lo executável; • Programas C são criados por intermédio da linkedição de um ou mais códigos-objetos com uma ou mais bibliotecas; • Uma biblioteca é um conjunto de códigos-linkeditáveis criados, fornecidos com os compiladores ou adquiridos; Linguagem C
Início Editar código fonte Sim Erros de linkedição? Não Compilar Sim Executar programa Erros de Erros de compilação? Sim tempo de Execução? Não Não Linkeditar Fim Compiladores e InterpretadoresCiclo de desenvolvimento Linguagem C
Estrutura de um Programa C • Declarações globais • tipo de retorno main (lista de parâmetros) • { • comandos; • } • tipo de retorno f1 (lista de parâmetros) • { • comandos; • } • .................. • tipo de retorno fn(lista de parâmetros) • { • comandos; • } Linguagem C
Ponto e vírgula, Chaves e Comentários • Ponto e vírgula: • Todos os comandos em C terminam obrigatoriamente com “;”. • Chaves (Blocos de Comando) • utilizadas para definir um bloco de comando, que são grupos de comandos relacionados que são tratados como uma unidade e estão logicamente conectados. Um bloco começa com uma { e termina com uma } Linguagem C
Ponto e vírgula, Chaves e Comentários • Um bloco de comando pode ser colocado em qualquer lugar onde seja possível a colocação de um comando. • Ex.: • #include <stdio.h> • #include <conio.c> // implementa getch no DevC++ • int main(void) • { • int total, a,b; • if (a<b) • { • scanf(“%d”,&total); • printf (“%d\n”, total); • } • getch(); • return 0; • } Linguagem C
Ponto e vírgula, Chaves e Comentários • Comentários: • Começa com o par de caracteres /* e termina com */ . Em C++ e alguns compiladores //; • Tudo é ignorado entre os símbolos de comentários; • Uma palavra chave não pode conter comentários; • Ex.: • /* x = x+1 ; • printf (“ %d\n”,x); */ • soma_total + = valorMensal + /* valor mensal das despesas */ • acumuladoAnterior; Linguagem C
Palavras Chaves • auto double int struct • break else long switch • case enum * register typedef • char extern return union • const * float short unsigned • continue for signed * void * • default goto!! Sizeof volatile* • do if static while • * ANSI Linguagem C
Mapa de Memória em C Pilha Heap Variáveis Globais Código do Programa Linguagem C
Mapa de memória em C • Pilha = usada para guardar o endereço de retorno das chamadas de função, argumentos para funções e variáveis locais e estado atual da CPU; • Heap = região de memória livre a ser usada pelo programa via funções de alocação dinâmica (Ex.: listas encadeadas e árvores) Linguagem C
C e C++ • C++ é uma versão estendida e melhorada de C, projetada para suportar programação orientada a objetos (OOP - Oriented Object Programming); • C++ é um superconjunto de C; • Compiladores C++ também são compiladores C padrão ANSI completo; Linguagem C
Tipos de Dados • Tipos Básicos de Dados • Tipo Tamanho em bits Faixa • char 8 0 a 255 • int 16(depende) -32768 a 32767 • float 32 -3.4E-38 a 3.4E38 • seis dígitos de precisão • double 64 -1.7E-308 a 1.7E308 dez dígitos de precisão • void 0 sem valor Linguagem C
Tipos de Dados • Modificadores de tipo • signed • unsigned • long • short • Ex.: long int 32(bits) faixa ( -2.147.483.648 a 2.147.483.647) • unsigned char 8 (bits) faixa de 0 a 255 Linguagem C
Tipos de Dados • Os modificadores signed, unsigned, short e long podem ser aplicados aos tipos básicos char e int; • long pode ser aplicado a double (long float tem o mesmo significado que double); • Signed com int é redundante; • unsigned com ponto flutuante pode ser permitido mas reduz portabilidade; Linguagem C
Identificadores • Identificadores = nomes de variáveis, funções e outros objetos definidos pelos usuários (não usar caracteres especiais); • Primeiro caractere deve ser letra ou um underscore e o restante pode ser letras, números ou undersocores; • Correto = xyz, soma_de_tudo • Incorreto = 1x, ju!lio Linguagem C
Identificadores • Em C, letras maiúsculas e minúsculas são diferentes; • Identificador não pode ser uma palavra chave de C; • Os identificadores devem ser auto explicativos; • Sugestão = somaTotalMensal, indicadorDeRepeticao ou soma_total_mensal e indicador_de_repeticao Linguagem C
Variáveis • Posição nomeada de memória, que é usada para guardar um valor que pode ser modificado pelo programa. • Todas as variáveis em C devem ser declaradas antes de serem usadas. • Forma geral de declaração: • tipo lista_de_variáveis; • onde tipo = qualquer tipo válido mais qualquer modificador Linguagem C
Variáveis • Lista_de_variáveis = um ou mais nomes de identificadores separados por vírgulas. • O nome da variável não tem nenhuma relação com o seu tipo. • Ex.: • short int controlador, id_processo_1; • unsigned int total_funcionarios; • double balanco_anual; Linguagem C
Variáveis • Onde declarar: • interna as funções ou blocos(variáveis locais); • parâmetros de funções (parâmetros formais); • fora de todas as funções (variáveis globais). • Variáveis Locais (auto - redundante): • Só podem ser referenciadas dentro das funções ou blocos onde foram declaradas; • Só existem enquanto o bloco de código onde estão está sendo executado (armazenadas na pilha); Linguagem C
Variáveis • int calculaQuadrado (void) • { • int valor; • scanf(“%d”, &valor); • return (valor*valor); • } • int calculaCubo (void) • { • int valor; • scanf(“%d”, &valor); • return (valor*valor*valor); • } Linguagem C
Variáveis • As variáveis locais podem ser declaradas dentro de qualquer bloco e não apenas no início das funções. • void CalculaMediaDoisNumeros (void) • { • int primeiroValor, segundoValor; • printf(“entre como primeiro número = “); • scanf(“%d”, &primeiroValor); • printf (“entre com segundo valor = “); • scanf (“%d”,&segundoValor); • if (primeiroValor > egundoValor) { • int media; /* só é valida dentro do bloco */ • media = (primeiroValor+segundoValor)/2; • printf (“media = %d \n”, media); • } • } Linguagem C
Variáveis • Parâmetros Formais: • São variáveis que recebem os valores dos argumentos das funções e devem ser do mesmo tipo; • Se comportam como qualquer outra variável local dentro da função; • int ImprimeQuadrado( int valor) • { • int numeroPontos; • for (numeroPontos=0; numeroPontos <10; numeroPontos++) • printf(“.”); • printf(“ O quadrado de (%d) é (%d)\n”, valor, valor *valor); • return valor*valor;} Linguagem C
Variáveis • Variáveis Globais – não usar( guardadas em área específica memória): • São reconhecidas dentro do contexto em que estão declaradas; • São declaradas fora das funções; • int contador,x; /* declaração de variável global */ • int main (void) • { • contador = 50; x=50; • ImprimePontos(); • printf (“ Contador (%d) \n”, contador); /* imprime o valor 50 */ • getch(); • return 0; } • int ImprimePontos(void) • { • for (contador =0; contador < 100; contador ++) • printf( “%d”,x+contador); } Linguagem C
Variáveis • Const • Não podem ser modificadas pelo programa só podem receber um valor inicial; • const int contador = 100; • Pode ser usado também para proteger os valores passados como parâmetros de uma função; • int Produto (const int a, const int b) • { • a += b; /* não pode ser efetuada - erro de sintaxe */ • return (a*b); • } • Muitas funções da biblioteca C padrão usam const em suas declarações de parâmetros, por exemplo : • size_t strlen (constchar *str) Linguagem C
Diretiva include • Instrui ao compilador a ler outro arquivo a ser adicionado aquele que contém a diretiva; • Nome do arquivo deve estar entre aspas (procura-o inicialmente no diretório atual) ou entre símbolos de menor ou igual (procura-o no padrão do compilador - diretórios de include); • #include “meuProjeto.hpp” • #include <stdio.h> • Recomendação : • Aspas para incluir arquivos do projeto; • Chaves angulares para incluir os arquivos de cabeçalho padrão; Linguagem C
Função main() • Função main() • Deve existir em algum lugar do programa e marca o ponto de início de execução do mesmo; • #include <stdio.h> • #include <conio.c> // implementga getch no devC++ • int main (void) • { • printf( “hello este é o meu primeiro programa\n”); • getch(); • return 0; • } Linguagem C
Função printf() • É uma função que imprime um determinado conteúdo na tela; • Forma geral • int printf (“string de controle”, lista de argumentos); • string de controle - contém caracteres que serão exibidos na tela e comandos de formatação; • lista de argumentos - contém os valores a serem formatados; • Deve haver o mesmo número de argumentos e de comandos de formato (ordem: esquerda->direita) Linguagem C
Função printf() • Códigos Especiais: • \n nova linha • \r retorno do cursor • \t tabulador • \” aspas • \\ barra Linguagem C
Função printf() • Códigos de impressão formatada • %c Caractere • %d, %i Inteiros com sinal • %e Notação científica (e minúsculo) • %E Notação científica (E maiúsculo) • %f Ponto flutuante • %g usa %e ou %f, que for mais curto • %G usa %E ou %f, que for mais curto Linguagem C
Função printf() • Códigos de impressão formatada • %o Octal • %s String • %u Inteiros sem sinal • %x Hexadecimal (letras minúsculas) • %X Hexadecimal (letras maiúsculas) • %% Escreve o símbolo Linguagem C
Função printf() • #include <stdio.h> • #include <conio.c> // implementa getch no devC++ • int main (void) • { • int i; • for (i=0; i<80;i+=10) • printf(“ %d”,i); ======> 0 10 20 30 40 50 60 70 • printf(“ valor de float(%f) \n”, 123.4567); ===> valor de float(123.4567) • printf(“string (%s)\n”, “teste de impressão”);===> string( teste de impressão) • getch(); • return 0; • } Linguagem C
Função printf() • Largura mínima de campo • Número colocado entre o símbolo % e o código de formato; • 0 antes do especificador de largura mínima coloca 0s a esquerda; • Usado para produzir tabelas; • double soma; • soma = 1234.56; • printf(“%f\n”, soma); ===> 1234.56 • printf(“%8f\n”, soma); ====> 1234.56 • printf(“%012f\n”, soma); ====> 000001234.56 Linguagem C