

































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Um curso básico de linguagem c, abordando conceitos como tipos e extensões de dados, variáveis, entrada e saída de dados, estruturas de controle, funções, ponteiros, matrizes, entre outros. Além disso, são fornecidos exemplos para ilustrar cada conceito.
Tipologia: Notas de estudo
1 / 41
Esta página não é visível na pré-visualização
Não perca as partes importantes!
1 Curso de Linguagem C
Rodolfo Jardim de Azevedo Instituto de Computação UNICAMP
2 Curso de Linguagem C
n A linguagem C é uma linguagem estruturada em bloco simples. Uma característica distintiva de uma linguagem estruturada em bloco é a compartimentalização de seu código e de seus dados, que é a habilidade de uma linguagem tem de seccionar e esconder do resto do programa todas as instruções necessárias para a realização de uma determinada tarefa.
3 Curso de Linguagem C
n Variáveis devem ser declaradas antes de serem usadas, permitindo assim, que o compilador saiba de antemão informações como tipo e espaço gasto em memória podendo fazer checagem durante o processo de compilação.
4 Curso de Linguagem C
n Utilizando funções, é possível esconder parte do código e variáveis, evitando assim, que sejam gerados efeitos colaterais em outras partes do programa. Desta forma, é necessário saber apenas o que as rotinas fazem, e não como elas fazem.
5 Curso de Linguagem C
n Os programas passam a maior parte do tempo repetindo tarefas até que uma condição seja satisfeita (ou um número fixo de vezes). Desta forma, fica mais fácil a programação e eliminam-se os inconvenientes gerados por vários gotos espalhados pelo programa.
6 Curso de Linguagem C
n Numa linguagem estruturada, os testes de condições são amplamente utilizados, tanto como controle de laços, quanto para execuções condicionais de blocos de código.
7 Curso de Linguagem C
n Surgiu nos anos 70 de uma linguagem chamada B. Criada por Dennis Ritchie. Embora houvessem poucas divergências entre as primeiras implementações em nível de código- fonte, foi desenvolvido o padrão ANSI sendo assim, qualquer programa C ANSI pode ser compilado em qualquer compilador C ANSI não importando a máquina na qual o programa vá ser executado. Por isso, quando se quer portabilidade, a escolha acaba recaindo sobre a linguagem C.
n Ao contrário do que possa parecer, nem todas as linguagens foram feitas para programadores. C é virtualmente única, porque ela foi criada, influenciada e testada em campo por programadores. Ela oferece ao programador exatamente o que ele quer: poucas restrições e queixas, código rápido e eficiência. Por isso ela é a linguagem mais popular entre os programadores profissionais altamente qualificados.
9 Curso de Linguagem C
n A linguagem C é sensível ao caso, isto quer significa que letras maiúsculas e minúsculas são tratadas como caracteres separados.
10 Curso de Linguagem C
/* Este é o primeiro programa */ #include <stdio.h> main() { printf(“Alo mundo\n”); } n Este é um exemplo bem simples, mas que mostra alguns componentes básicos que existem nos programas feitos em C. Nele vemos:
11 Curso de Linguagem C
n Esta linha é um comentário.
12 Curso de Linguagem C
n Indica a inclusão de arquivos dentro do programa atual (neste caso, o arquivo stdio.h). Normalmente são arquivos cabeçalhos contendo declarações de tipos e protótipos de funções. Serão vistos mais tarde.
19 Curso de Linguagem C
n Todo bloco de código escrito em C deve vir entre chaves. Não é necessário colocar um ponto e vírgula depois de fechar chaves pois cada comando dentro do bloco já possui o seu terminador.
20 Curso de Linguagem C
n Na linguagem C, os comentários são delimitados por /* e */ como pode ser visto na primeira linha do programa anterior. Não é permitido colocar comentários aninhados. Os comentários podem vir em qualquer posição do programa e não apenas em linhas separadas. Eles também podem começar em uma linha e terminar em outra.
21 Curso de Linguagem C
n Como todas as outras linguagens de programação, C consiste em palavras reservadas e em regras de sintaxe que se aplicam a cada palavra reservada. Uma palavra reservada é essencialmente um comando, e na maioria das vezes, as palavras reservadas de uma linguagem definem o que pode ser feito e como será feito. O padrão ANSI C especifica as seguintes palavras reservadas:
22 Curso de Linguagem C
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
n Por ser uma linguagem estruturada, em C, as variáveis devem ser declaradas antes de serem usadas, permitindo assim, que o compilador faça checagens em tempo de compilação.
24 Curso de Linguagem C
n Identificadores são nomes usados para se fazer referência a variáveis, funções, rótulos e vários outros objetos definidos pelo usuário. Um identificador pode ter de um a vários caracteres. O primeiro deve ser uma letra ou um sublinhado, e os caracteres subseqüentes deve serm letras, números ou um sublinhado.
25 Curso de Linguagem C
n Em C, existem 5 tipos de dados básicos: caracter, inteiro, ponto flutuante, ponto flutuante de dupla precisão e sem valor. As palavras reservadas para declarar variáveis destes tipos são char, int, float, double e void respectivamente. Veja na tabela a seguir o espaço gasto por cada um destes tipos assim como seus limites em máquinas IBM PC compatíveis.
26 Curso de Linguagem C
27 Curso de Linguagem C
n Com exceção de void, os tipos de dados básicos têm vários modificadores que os precedem. O modificador é usado para alterar o significado do tipo-base para que ele se adapte da maneira mais precisa às necessidades das várias situações. Eis aqui uma lista dos modificadores: signed, unsigned, long, short. Os dois primeiros modificadores indicam a existência ou não de sinal enquanto os outros dois são relativos ao tamanho de memória necessário para armazenar o valor de um elemento deste tipo.
28 Curso de Linguagem C
Tipo Extensão em bits char 8 int 16 short int 16 long int 32 float 32 short float 32 long float 64 double 64 short double 64 long double 80
29 Curso de Linguagem C
n Uma declaração de variável deve seguir a seguinte regra:
tipo lista_variáveis;
n onde tipo deve ser um tipo válido em C e lista_variáveis pode consistir em um ou mais identificadores separados por vírgula.
n int i, j, l; n short int si; n unsigned int ui; n long inteiro_grande; n double balanco, lucro, prejuizo;
37 Curso de Linguagem C
display() { int cont; /* Variável local / / esta variável cont é diferente daquela declarada em main() */
for(cont = 0; cont < 10; cont ++) printf(“-”); printf(“A soma atual é %d”, soma); }
38 Curso de Linguagem C
n Neste exemplo, qualquer função do programa pode acessar a variável global soma. Porém total() não pode acessar diretamente a variável local cont em main(), que deve passar cont como um argumento. Isto é necessário porque uma variável local só pode ser usada pelo código que está na mesma função na qual ela é declarada. Observe que cont em display() é completamente separada de cont em main(), novamente porque uma variável local é conhecida apenas pela função na qual ela é declarada.
39 Curso de Linguagem C
n Nós vimos que em main() existe uma linha somente para inicializar a variável soma, esta linha poderia ser suprimida se a variável fosse declarada
int soma = 0;
n Desta forma, podemos inicializar variáveis no momento de sua declaração, o que facilita muito a escrita do programa além de reduzir o seu tamanho.
40 Curso de Linguagem C
n Constantes são valores fixos que o programa não pode alterar.
41 Curso de Linguagem C
Tipo de dado Exemplo char ‘a’ ‘n’ ‘9’ int 1 123 2100 - long int 35000 - short int 10 -12 90 unsigned int 10000 987 40000 float 123.23 4.34E- double 123.23 12312333 -0.
42 Curso de Linguagem C
n Podem ser declaradas constantes em hexadecimal ou octal conforme o exemplo a seguir: int hex = 0xFF; /* 255 em decimal / / as constantes em hexadecimal devem ser precedidas por 0x / int oct = 011; / 9 em decimal / / as constantes em octal devem ser precedidas por 0 */
43 Curso de Linguagem C
n Uma string é um conjunto de caracteres entre aspas. Por exemplo, “esta é uma string” é uma string. Não confundir strings com caracteres, ‘a’ é um caracter enquanto “a” é uma string.
44 Curso de Linguagem C
n Existem alguns caracteres que não podem ser representados no texto comum, as constantes com barra invertida servem para representar estes caracteres.
45 Curso de Linguagem C
Código Significado \b retrocesso \f avanço de página \n mudança de linha \r retorno de carro \t tab horizontal \” aspas duplas \’ aspas simples \0 ASCII 0 \ barra invertida \v tab vertical \a alerte (beep) \x constante hexadecimal
46 Curso de Linguagem C
n A linguagem C é muito rica em operadores. Os operadores são divididos em 3 categorias gerais: aritméticos, de relação e lógicos e bit a bit. Além desses, C tem operadores especiais para tarefas particulares.
47 Curso de Linguagem C
Operador Ação
48 Curso de Linguagem C
main() { int x = 10, y = 3; printf(“%d\n”, x / y); /* exibirá 3 / printf(“%d\n”, x % y); / exibirá 1, o resto da divisão de inteiros / x = 1; y = 2; printf(“%d %d\n”, x / y, x % y); / exibirá 0 e 1 */
55 Curso de Linguagem C
n Quando você mistura constantes e variáveis de tipos diferentes em uma expressão, C as converte para o mesmo tipo. O compilador C converterá todos os operandos para o tipo do maior operando, uma operação de cada vez, conforme descrito nestas regras de conversão de tipo:
56 Curso de Linguagem C
n Todo char e short int é convertido para int. Todo float é convertido para double.
57 Curso de Linguagem C
n Para todos os pares de operandos, ocorre o seguinte, em seqüência: se um dos operandos for um long double, o outro será convertido para long double. Se um dos operandos for double, o outro será convertido para double. Se um dos operandos for long, o outro será convertido para long. Se um dos operandos for unsigned, o outro será convertido para unsigned.
58 Curso de Linguagem C
n Pode-se forçar o compilador a efetuar determinada conversão utilizando-se um type cast que tem a seguinte forma: (tipo) expressão
59 Curso de Linguagem C
main() { int x = 3; printf(“%f %f\n”, (float) x / 2, (float) (x / 2)); /* serão impressos na tela 1.5 e 1.0 pois no primeiro caso, x é convertido para float e depois é dividido, já no segundo, somente o resultado é convertido para float */ }
60 Curso de Linguagem C
n Os modificadores de acesso informam sobre como será feito o acesso à variável.
61 Curso de Linguagem C
n Sempre que uma variável for declarada do tipo register, o compilador fará o máximo possível para mante-la num dos registradores do microprocessador, acelerando assim o acesso a seu valor. É pratica comum, declarar as variáveis de controle de loop como sendo register.
62 Curso de Linguagem C
n Variáveis static são variáveis existem durante toda a execução do programa, mas só podem ser acessadas de dentro do bloco que a declarou.
63 Curso de Linguagem C
/* Exemplo de variável static / main() { printf(“%d\n”, numero()); / imprimirá 0 / printf(“%d\n”, numero()); / imprimirá 1 / } numero() { static valor = 0; / atribuição só executada 1 vez */ return valor ++; }
64 Curso de Linguagem C
n Rotina de finalidade geral para saída pelo console n A função printf() serve para mostrar mensagens na tela. Sua forma geral é
printf(“string de controle”, lista argumentos);
65 Curso de Linguagem C
n A string de controle consiste em dois tipos de itens: Caracteres que a função imprimirá na tela Comandos de formatação
66 Curso de Linguagem C
n Todos os comandos de formatação começam por % que é seguido pelo código de formatação n Deve haver exatamente o mesmo número de argumentos quanto forem os comandos de formatação e eles devem coincidir em ordem
73 Curso de Linguagem C
n Podemos usar modificadores para informar sobre a leitura de shorts (modificador h) ou longs (modificador l)
Exemplo Função %hd Imprime um short int %ld Imprime um long int
74 Curso de Linguagem C
Comando printf() Resultado (“%-5.2f”, 123.234) 123. (“%5.2f”, 3.234) 3. (“%10s”, “alo”) alo (“%-10s”, “alo”) alo (“%5.7s”, “123456789”) 1234567 (“%5.4d”, 123) 0123
75 Curso de Linguagem C
n Rotina de finalidade geral para entrada pelo console n A função scanf() serve para ler informações do teclado. Sua forma geral é
scanf(“string de controle”, lista argumentos);
76 Curso de Linguagem C
n A string de controle consiste em três classificações de caracteres: Especificadores de formato Caracteres brancos Caracteres não-brancos
77 Curso de Linguagem C
n Todos os especificadores de formato começam por % que é seguido por um caracter que indica o tipo de de dado que será lido n Deve haver exatamente o mesmo número de argumentos quanto forem os especificadores de formato e eles devem coincidir em ordem
78 Curso de Linguagem C
Código Lê %c único caracter %d decimal %i decimal %e número com ponto flutuante %f numero com ponto decimal flutuante %o número octal %s string de caracteres %x hexadecimal %p ponteiro %n recebe um valor inteiro igual ao número de caracteres lidos até o momento
79 Curso de Linguagem C
n Um caracter branco na string de controle faz com que scanf() passe por cima de um ou mais caracteres brancos na string de entrada n Um caracter branco é um espaço, um tab ou um \n
80 Curso de Linguagem C
n Um caracter não branco na string de controle faz com que scanf() leia e desconsidere um caracter coincidente. Se o computador não encontrar o caracter especificado, scanf terminará n O comando “%d,%d” fará com que scanf leia um inteiro, depois leia e desconsidere uma vírgula e finalmente, leia um outro inteiro
81 Curso de Linguagem C
n Todas as variáveis usadas para receber valores através de scanf() devem ser passadas por seus endereços. Se quiser ler a variável cont, utilize scanf(“%d”, &cont); n Como strings são representadas por vetores, NÃO deve ser colocado o & antes do nome da variável
82 Curso de Linguagem C
n Colocar um * entre o % e o código de formatação fará com que scanf() leia dados do tipo especificado mas suprimirá suas atribuições. Desta forma scanf(“%d%*c%d”, &x, &y) n dada a entrada 10/20, coloca 10 em x, desconsidera o sinal de divisão e coloca 20 em y
83 Curso de Linguagem C
n Para especificar o comprimento máximo que um campo poderá ter, basta colocar um inteiro entre o sinal % e o comando de formatação. Os caracteres que sobrarem serão utilizados nas próximas chamadas a scanf(). Caso não queira ler mais do que 20 caracteres na string nome, utilize scanf(“%20s”, nome);
84 Curso de Linguagem C
n Servem como separadores quando não estiverem sendo lidos caracteres. São lidos e atribuídos quando for pedido um caracter de entrada. Caso o comando scanf(“%c%c%c”, &a, &b, &c); n seja lido com a entrada x y n scanf retornará com x em a, espaço em b e y em c
91 Curso de Linguagem C
n É muito comum encontrar programas que possuem uma “escada” if-else-if da seguinte forma: if (condição) comando; else if (condição) comando; else comando;
92 Curso de Linguagem C
n O computador avalia as expressões condicionais de cima para baixo. Assim que encontra uma condição verdadeira, ele executa o comando associado a ela e passa por cima do resto da “escada”. n Se nenhuma condição for verdadeira, o computador executará o else final.
93 Curso de Linguagem C
n Qualquer expressão válida em C pode servir como expressão condicional. Veja o exemplo: /* dividir o primeiro número pelo segundo */ main() { int a, b; printf(“Digite dois números: “); scanf(“%d %d”, &a, &b); if (b) printf(“%d\n”, a/b); else printf(“não posso diridir por zero\n”); }
94 Curso de Linguagem C
n Embora o if-else-if possa executar vários tipos de testes, o código pode ficar muito difícil de ser seguido. n C possui um comando de vários desvios chamado switch. n No switch, o computador testa uma variável sucessivamente contra uma lista de constantes inteiras ou de caracteres e executa um comando ou bloco de comandos quando encontrar uma coincidência.
95 Curso de Linguagem C
switch (variável) { case constante1: seqüência de comandos break; case constante2: seqüência de comandos break;
default: seqüência de comandos }
n O comando default será executado se não for encontrada nenhuma coincidência na lista de constantes. n Caso não seja colocado um comando default e não haja coincidência, nenhum comando será executado.
97 Curso de Linguagem C
n Quando o computador encontra alguma coincidência, ele executa os comandos associados àquele case até encontrar break ou o fim do comando switch. n É um erro comum programadores esquecerem de colocar o break após os comandos.
98 Curso de Linguagem C
n O switch difere do if, já que o primeiro só pode testar igualdade e a expressão condicional if pode ser de qualquer tipo. n Não pode haver duas constantes case com valores iguais no mesmo switch. n Podem ser colocados comandos switch dentro de comandos switch. n Pode ser deixado um case vazio quando mais de uma condição usa o mesmo código.
99 Curso de Linguagem C
n Os comandos de controle de loops permitem que o computador repita um conjunto de instruções até que alcance uma certa condição. Em C temos os seguintes comandos de controle de loop:
100 Curso de Linguagem C
n O loop for em C é muito mais forte e mais flexível que o da maioria das outras linguagens. Sua forma geral é for (inicialização; condição; incremento) comando; n Observe que as três partes do loop for são separadas por ponto e vírgula. n Nenhuma destas partes precisa existir.
101 Curso de Linguagem C
n Na forma mais simples, inicialização é um comando de atribuição que o compilador usa para estabelecer a variável de controle de loop. n A inicialização pode conter qualquer comando válido em C.
102 Curso de Linguagem C
n A condição é uma expressão de relação que testa se a condição final desejada pelo loop for ocorreu. n Aqui também pode ser colocado qualquer comando válido em C.
109 Curso de Linguagem C
main() { int t; for (prompt(); t=readnum(); prompt()) sqrnum(t); } prompt() { printf(“digite um inteiro:” ); } readnum() { int t; scanf(“%d”, &t); return t; } sqrnum(int num) { printf(“%d\n”, num * num); }
110 Curso de Linguagem C
n Podemos fazer um comando for executar para sempre simplesmente não especificando sua parte condicional. Veja for (;;) printf(“este loop rodará para sempre\n”);
111 Curso de Linguagem C
n Podemos usar o comando break para encerrar um for a qualquer momento. Veja um exemplo: main() { int a; for (a = 1; a < 100; a++) if (a == 10) break; } n O loop só será executado 10 vezes.
112 Curso de Linguagem C
n Podem ser utilizados loops sem corpo para gerar retardo de tempo. Veja um exemplo: for (a = 0; a < 1000; a ++);
113 Curso de Linguagem C
n O while executa um comando (ou bloco de comandos) enquanto uma condição for verdadeira. n A forma geral do while é: while (condição) comando;
114 Curso de Linguagem C
pausa() { char tecla = ‘\0’; printf(“Tecle ESPAÇO para continuar...”); while (tecla != ‘ ’) tecla = getche(); }
115 Curso de Linguagem C
n O exemplo anterior pode ser reescrito sem utilizar variável. Veja: main() { printf(“Tecle ESPAÇO para continuar...”); while (getche() != ‘ ’); }
116 Curso de Linguagem C
n Ao contrário do loop for e do loop while, que testam a condição no começo do loop, o loop do while verifica a condição somente no final. Desta forma, o loop será executado pelo menos uma vez. A forma geral do loop do while é: do { comando; } while (condição);
117 Curso de Linguagem C
/* Lê um número maior que 100 */ main() { int num; do { printf(“Digite um número maior que 100”); scanf(“%d”, &num); } while (num <= 100); }
118 Curso de Linguagem C
n Quando um loop está dentro do outro, dizemos que o loop interior está aninhado. n Loops aninhados permite que sejam solucionados vários problemas de programação. n Em C podemos aninhar qualquer tipo de loop.
119 Curso de Linguagem C
/* exibir uma tabela de potências dos números de 1 a 9/ main() { int i, j, k, temp; printf(“\ti\ti^2\ti^3\ti^4\n”); for (i = 1; i < 10; i ++) { / loop externo / for (j = 1; j < 5; j ++) { / primeiro nível de aninhamento / temp = 1; for (k = 0; k < j; k ++) / loop mais interior */ temp = temp * i; printf(“%8d”, temp); } } }
120 Curso de Linguagem C
n Quando precisamos encerrar um loop sem que sua condição de encerramento esteja satisfeita, podemos utilizar o comando break. n O comando break é especialmente útil quando algum evento externo controle um loop.