Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Agradecimentos
T CNICAS DE P ROGRAMAO I
1/11
UNILAB
Linguagem C
Agradecimentos
ndice da Apresentao
Linguagem C Linguagem C
2/11
UNILAB
Linguagem C
Agradecimentos
L INGUAGEM C
3/11
UNILAB
Linguagem C
Agradecimentos
Linguagem C
1 2 3 4 5 6 7 8 9 10 11 12
Introduo; A Biblioteca-padro e as Palavras Reservadas em C; Tipos de Dados e Variveis; Operadores e Expresses; Entrada e Sada E/S pelo Console; Estruturas de Controles; Funes; Arrays e Strings; Ponteiros; Estruturas, Unies e Enumeraes; Arquivos e Streams; Estruturas de dados: Listas lineares (Filas, Pilhas e Listas Encadeadas). Ordenao e Pesquisa.
4/11 UNILAB
Linguagem C
Agradecimentos
Introduo
Introduo
A linguagem C foi desenvolvida por Dennis Ritchie no Bell Laboratories, a partir de outras duas linguagens mais antigas a BCPL e a B; C uma linguagem de programao que permite uma abordagem estruturada e disciplinada para a escrita de programas; Os cdigos escritos em C so portveis, i.e, podem ser adaptados ao outros computadores com pouca ou nenhuma modico nos cdigos.
5/11
UNILAB
Linguagem C
Agradecimentos
Introduo
Introduo
A linguagem C foi desenvolvida por Dennis Ritchie no Bell Laboratories, a partir de outras duas linguagens mais antigas a BCPL e a B; C uma linguagem de programao que permite uma abordagem estruturada e disciplinada para a escrita de programas; Os cdigos escritos em C so portveis, i.e, podem ser adaptados ao outros computadores com pouca ou nenhuma modico nos cdigos.
5/11
UNILAB
Linguagem C
Agradecimentos
Introduo
Introduo
A linguagem C foi desenvolvida por Dennis Ritchie no Bell Laboratories, a partir de outras duas linguagens mais antigas a BCPL e a B; C uma linguagem de programao que permite uma abordagem estruturada e disciplinada para a escrita de programas; Os cdigos escritos em C so portveis, i.e, podem ser adaptados ao outros computadores com pouca ou nenhuma modico nos cdigos.
5/11
UNILAB
Linguagem C
Agradecimentos
Introduo
Introduo
A linguagem C foi desenvolvida por Dennis Ritchie no Bell Laboratories, a partir de outras duas linguagens mais antigas a BCPL e a B; C uma linguagem de programao que permite uma abordagem estruturada e disciplinada para a escrita de programas; Os cdigos escritos em C so portveis, i.e, podem ser adaptados ao outros computadores com pouca ou nenhuma modico nos cdigos.
5/11
UNILAB
Linguagem C
Agradecimentos
6/11
UNILAB
Linguagem C
Agradecimentos
6/11
UNILAB
Linguagem C
Agradecimentos
string.h time.h
6/11
UNILAB
Linguagem C
Agradecimentos
Palavras reservadas em C
auto break case char const continue default do double else enum extern oat for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
6/11
UNILAB
Linguagem C
Agradecimentos
Em C, o tipo de dado lgico obtido pela utilizao do valor 0 (zero) para falso (false) e 1 (um) ou qualquer valor diferente de zero para verdadeiro (true).
Prof. John Hebert S. Felix Tcnicas de Programao I 7/11 UNILAB
Linguagem C
Agradecimentos
7/11
UNILAB
Linguagem C
Agradecimentos
7/11
UNILAB
Linguagem C
Agradecimentos
Identicadores Vlidos
Em C, os nomes ou identicadores das variveis devem atender as seguintes regras:
1 2 3 4 5
O identicador deve comear com um caractere alfabtico ou _(underline); O identicador pode ter caracteres numricos, desde que atenda a regra 1; O identicador no pode conter caracteres especiais; Utilizar nomes signicativos para representar as variveis do programa; C faz distino entre letras minsculas e maisculas,e.g., Nome e nome so variveis diferentes; Ex.:identicadores vlidos: numero, conta, _nome, idade, B13, C2; Ex.:identicadores invlidos: _av!15, entre..par, a-b, c&h, 1car.
7/11 UNILAB
6 7
Linguagem C
Agradecimentos
7/11
UNILAB
Linguagem C
Agradecimentos
A constantes string suportada por C. Uma string correponde a um conjunto de caracteres entre aspas dupla, e.g., Hoje a noite tem festa. C suporta constantes de barra invetida que insere caracteres especiais como constantes.
Cdigos de barra invetida Cdigo \n \t Descrio Nova linha. Insere o curso da tela no comeo de uma nova linha Tabulao horizontal. Movimenta o curso da tela para a prxima posio de tabulao horizontal Aspas duplas. Insere aspas duplas Aspas simples. Insere aspas simples Nulo. Indica o m de uma string Barra invertida. Insere um caractere de barra invetida em uma string Tabulao vertical Alerta (beep). Emite o sinal sonoro do sistema
7/11
UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Operador de Atribuio Em C, o operador ou comando de atribuio representado por =. A sintaxe deste operador mostrado a seguir: varivel = dado_atribudo; varivel = expresso; ou varivel1 = varivel2 = variveln = expresso;
A atribuio em C, pode ocorrer durante a declarao de variveis conforme mostrado a seguir. Atribuio de Valores em Variveis #include <stdio.h> #include <stdlib.h> int main (void){ unsigned short int numConta = 1200013; unsigned char tipConta = F; //F - pessoa Fsica e J - pessoa Jurdica oat saldoConta = 2750.92; /* Corpo do programa - Aes a serem executadas */ return 0; }
Prof. John Hebert S. Felix Tcnicas de Programao I 8/11 UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Converso de tipos de dados por atribuio Em C, a atribuio de valores a tipos diferentes pode converte o seu tipo de dado, e.g., a vari de destino recebe o valor da expresso e adequa tal valor a seu tipo de dado.
Ex.: Converso de tipo por atribuio #include <stdio.h> #include <stdlib.h> int main (void){ int inum; char ctex; oat fvr; ctex = inum; /* ctex recebe os 8 bits menos signicativos de inum, se inum for de 0 a 256, ctex tem valor semelhante ao de inum */ inum = fvr; /* inum recebe a parte inteira de fvr */ fvr = ctex; /* fvr converte o valor de ctex para ponto utuante */ fvr = inum; /* fvr converte o valor de inum para utuante */ return 0; }
8/11
UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Operadores Aritmticos Operador + * / % ++ Funo Adio Subtrao (ou menos unrio) Multiplicao Diviso Resto Decremento Incremento Exemplo c=a+b c=ab c=a*b c=a/b c=a%4 a (pr-decremento) ou a (ps-decremento) ++a (pr-incremento) ou a++ (ps-incremento)
8/11
UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Operadores Lgicos Operador && || ! Funo AND OR NOT Exemplo f && v = f f || v = v !f = v
8/11
UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Operadores Relacionais Operador == > < >= <= != Funo Igual a Maior que Menor que Maior ou igual a Menor ou igual a Diferente Exemplo c == a a>b a<b c >= a c <= a c != a
8/11
UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Operadores Bit a Bit Operador & ! Funo AND OR OR exclusivo (XOR) Complemento de um Deslocamento esquerda Deslocamento direita Exemplo Equivante a && Equivante a || a (inverte os bits, 1 == 0 e 0 ==1) a = b2; b = a1;
b 0 1 0 1
8/11
ab 0 1 1 0
UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Ex.: Incremento e deslocamento de bits #include <stdio.h> int main (void){ int a = 3, b = 3; printf(Mostra o valor de a: %d\n", a); /* Realiza o pr-incremento */ printf(Realiza o pr-incremento: %d\n, ++a); printf(Mostra o valor de a com pr-incremento:%d\n, a); a = 3; printf(Mostra o valor de a: %d\n", a); /* Realiza o ps-incremento */ printf(Realiza o ps-incremento: %d\n, a++); printf(Mostra o valor de a com ps-incremento:%d\n, a); /* Realiza o deslocamento esquerda */ printf(Realiza o deslocamento esquerda:%d:%d:%d\n, b, b1, b2); b = 3; /* Realiza o deslocamento direita */ printf(Realiza o deslocamento direita:%d:%d:%d\n, b, b1, b2); return 0; }
Prof. John Hebert S. Felix Tcnicas de Programao I 8/11 UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Operadores: ternrio ? e ponteiros & e O operador ternrio ? pode substituir a estrutura de seleo if-then-else; A forma do operador ternrio ? : expresso1 ? expresso2 : expresso3 ; Ex.: a = c > 5 ? 10 : 30; Se a expresso1 (c > 5) verdadeira, a = 10, caso contrrio, a = 30;
Operadores: ternrio ? e ponteiros & e Um endereo de uma varivel na memria chamado de ponteiro; Os operadores & e so unrios. O primeiro operador & retorna o endereo na memria de seu operando. O segundo operador o complemento de & e retorno o valor da varivel localizada no endereo que o segue.
8/11
UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Ex.: Ponteiros #include <stdio.h> int main (void){ int valor, aux; int *endereco; aux = 7; endereco = &aux; valor = *endereco; printf(O endereo :%d\n, endereco); printf(O valor :%d\n, valor); return 0; }
8/11
UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Operadores: vgula (,), ponto (.) e seta (->) O operador vgula (,) utilizado para fazer o encadeamento de expresso, e.g., a = (b = 5, b + 2); Os operadores ponto (.) e seta (->) so utilizados no referenciamento de estruturas e unies. Estes so tipos de dados compostos referenciado por um mesmo nome (identicador); Operadores: parnteses () e colchetes [] O operador parnteses () aumenta a precedncia entre das operaes que esto no seu interior; O operador colchetes [] permite indexar arrays unidimensionais (vetores) e arrays bidimensionais (tabelas), e.g., char texto[10];
8/11
UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Precedcia entre os operadores em C Operadores ( ) [ ] -> + ++ ! * & (tipo) */% + < <= > >= == != & | && || ?: = += = *= /= Associatividade esquerda para direita direita para esquerda esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita Tipo maior unrio multiplicativo aditivo relacional igualdade/diferena AND lgico XOR lgico lgico lgico lgico condicional atribuio
8/11
UNILAB
Linguagem C
Agradecimentos
Operadores e Expresses
Expresses e Blocos de Comandos Em C, uma expresso uma combinao vlida de operadores, constantes e variaveis; Converter uma expresso a mudar para um determindado tipo de dado denomindado de cast. A forma do cast (tipo)expresso. Ex.: (double) var1/10; C reduzido consiste em simplicar a codicao de operadores de atribuio. A forma do C reduzido varivel operador = expresso correponde a forma normal varivel = varivel operador expresso. Ex.: a = a + 5; na forma simplicada ca a+ = 5; Os blocos de comandos so conjuntos ou grupos de comandos relacionados, que so tratados como unidade. Em C, um bloco de comando estar entre chaves { comandos }, i.e, o incio indicado por { e o m por }.
8/11
UNILAB
Linguagem C
Agradecimentos
Exemplos para os comandos de entrada e sada scanf (%c %d %f, tipoConta, numConta, valorConta); printf (%c %d %f, tipoConta, numConta, valorConta);
9/11
UNILAB
Linguagem C
Agradecimentos
9/11
UNILAB
Linguagem C
Agradecimentos
Descrio caractere inteiros decimais com sinal notao cientca (minsculo e maisculo) ponto utuante decimal utiliza %e ou %f, o que for mais curto utiliza %E ou %F, o que for mais curto octal sem sinal mostra um ponteiro mostra o nmero de caracteres escritos at esse ponto string inteiros decimais sem sinal hexadecimal sem sinal (minsculo e maisculo) mostra o smbolo %
9/11 UNILAB
Linguagem C
Agradecimentos
9/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Estruturas de controle As estruturas ou comandos de controle podem ser divididos em: seleo, iterao e desvios. Seleo ou condicional: fazem parte os comandos if e switch; Iterao ou lao: fazem parte os comandos while, for e do-while; Desvio ou salto: fazem parte os comandos break, continue, return e goto;
10/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Estrutura de seleo O comando de seleo if executa uma ao ou um bloco de aes, quando uma condio verdadeira, caso contrrio a ao ou um bloco de aes do else (se existir) executado.
Sintaxe - if-else - bloco de comandos if (expresso){ Bloco de Comandos; } else { Bloco de Comandos; }
10/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Sintaxe - if-else aninhados comando nico if (expresso) Comando; else if (expresso) Comando; else if (expresso) Comando;
Sintaxe - if-else aninhados - bloco de comandos if (expresso) { Bloco de Comandos; } else if (expresso) { Bloco de Comandos; } else if (expresso) { Bloco de Comandos; }
10/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Exemplo de estrutura de seleo composta.
Mdia aritmtica indicando aprovado e reprovado #include <stdio.h> int main (void){ oat nota1, nota2, nota3, media; printf(Digite as 3 notas\n); scanf(%f\n%f\n%f, ¬a1, ¬a2, ¬a3); media = (nota1 + nota2 + nota3)/3; if (media>=7) { printf(Aluno aprovado\n); printf(A sua mdia : %f\n, media); } else { printf(Aluno reprovado\n); printf(A sua mdia : %f\n, media); } return 0; }
Prof. John Hebert S. Felix Tcnicas de Programao I 10/11 UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Seleo de mltipla escolha - switch A estrutura de seleo switch seleciona uma dentre um conjunto de condies associadas a uma sequncia de valores.
10/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Sintaxe - switch switch(expresso) { case Valor1 : Sequncia de comandos; break; /*comando que desvia a excuo do programa para outra linha do cdigo*/ case Valor2 : Sequncia de comandos; break; . . . default: Sequncia de comandos; break; }
Ex.: Calculadora com 4 operaes #include <stdio.h> int main (void){ oat numa, numb; char oper; printf(Digite o 1o nmero o operador e o 2o nmero\n); scanf(%f%c%f, &numa, &oper, &numb); switch(oper) { case +: printf(A adio : %2.2f\n, numa + numb); break; case : printf(A subtrao : %2.2f\n, numa numb); break; case *: printf(A multiplicao : %2.2f\n, numa * numb); break; case /: printf(A diviso : %2.2f\n, numa / numb); break; default: printf(Operao invlida!\n); break; } return 0; 10/11 }
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Estrutura de Iterao ou lao - for Controla o uxo de execuo, por meio de uma quantidade de repeties predenidas.
Sintaxe - lao for for(inicializao; condio; incremento) { Sequncia de comandos; } Se houver apenas um comando, o bloco representado por { }, pode ser retirado.
Em que: inicializao: atribui um valor a varivel de controle; condio: indica uma expresso relacional que determina o m do lao; incremento: deni a forma de variao da varivel de controle a cada iterao.
10/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Ex.: Mdia geral da turma #include <stdio.h> int main (void){ oat mAno, mAnoTur, acum; int i; printf(Digite a mdia da turma de 36 alunos\n); for(i=1;i<=36;i++){ scanf(%f,&mAno); acum = aum + mAno; } mAnoTur = acum/36; printf(A mdia anual da turma : %2.2f\n, mAnoTur); return 0; }
Ex.: Lao innito #include <stdio.h> int main (void){ char letra; printf(Digite a letra L para sair do lao\n); for( ; ; ){ scanf(%f,&mAno); letra = getchar(); if (letra == L) break; /*sai do lao*/ } return 0; }
10/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Estrutura de Iterao ou lao - while Controla o uxo de execuo, repetindo vrias vezes uma mesma parte ou bloco de um programa. Sintaxe - lao while while(condio) { Sequncia de comandos; }
10/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
10/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Estrutura de Iterao ou lao - do-while Controla o uxo de execuo, repetindo vrias vezes uma mesma parte ou bloco de um programa, realizando o teste no nal. Sintaxe - lao do-while do { Sequncia de comandos; }while(condio);
10/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Ex. 2: Especicifacao da porcentagem de vinho O algoritmo apresentado a seguir, especica a porcentagem dos tipos de vinhos: tinto, branco e ros. O algoritmo informa a quantidade de vinho desconhecida e para sair um nalizador
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Ex. 2: continuao
} while(tipV != S); //teste da condio de saida conV = 1; // desconta o nalizador S if(conV) { pTin = (conTin * 100) / conV; pBra = (conBra * 100) / conV; pRos = (conRos * 100) / conV; printf (As % dos vinhos tinto, branco e ros so, respectivamente:%2.2f\n%2.2f\n%2.2f, pTin, pBra, pRos); } else printf (No foi informado nenhum tipo de vinho!\n); }
10/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Comandos de desvio return: utilizado para retornar de uma funo e caso algum valor esteja associado a este comando ser tambm retornado. A sua forma : return expresso; break: pode ser utilizado para nalizar case de um comando switch ou lao. A sua forma : break; continue: realiza a execuo do prximo comando. No caso de um lao faz este realizar a sua prxima iterao. A sua forma : continue;
10/11
UNILAB
Linguagem C
Agradecimentos
Estruturas de controle
Comandos de desvio goto: caiu em desuso devido a tendncia de deixar os programas ilegveis. A sua forma :
10/11
UNILAB
Linguagem C
Agradecimentos
Agradecimentos
11/11
UNILAB