Upload
sally
View
70
Download
0
Embed Size (px)
DESCRIPTION
Linguagem C. Sumário. As origens do C. C é uma linguagem de Médio Nível C é uma linguagem Estruturada C é uma linguagem para Programadores Compiladores X Interpretadores A Forma de um programa em C A Biblioteca e a Linkedição Compilação Separada Compilando um programa C - PowerPoint PPT Presentation
Citation preview
Prof. Ana Emilia de Melo Queiroz 1
Linguagem C
Prof. Ana Emilia de Melo Queiroz 2
Sumário• As origens do C.
– C é uma linguagem de Médio Nível– C é uma linguagem Estruturada– C é uma linguagem para Programadores– Compiladores X Interpretadores– A Forma de um programa em C– A Biblioteca e a Linkedição– Compilação Separada– Compilando um programa C– O Mapa de Memória C
• Expressões em C.– O cinco tipos básicos de C– Variáveis Locais de declaração, variáveis locais, Parâmetros formais, variáveis globais.– Inicialização de variáveis.– Cosntantes, Hexadecimais, Octais, String, Caracteres e Barra invertida.
Prof. Ana Emilia de Melo Queiroz 3
• Operadores, atribuição, conversão de tipos em atribuições, atribuições múltiplas, operadores aritméticos, Incremento e Decremento, Operadores relacionais e lógicos.
• Matrizes Unidimensionais – Vetores• Matrizes Bidimensionais e multidimensionais– Matriz
– Matriz e String.– Inicialização de Matrizes.
Sumário
Prof. Ana Emilia de Melo Queiroz 4
Origens do C• C nasceu de BCPL, que influenciou uma linguagem chamada B. • Na década de 70, B levou ao desenvolvimento do C.• C foi padronizado pela ANSI(American National Standards Instituite) em 1983.• O livro C completo total adota o padrão ANSI e exemplifica outras implementações.
Prof. Ana Emilia de Melo Queiroz 5
Nível da Linguagem C• C é uma linguagem de médio nível, pois
combina elementos das linguagens de alto nível com elementos de linguagem com assembler.
• Permite manipulação de Bits.• Suportam o conceito de tipos de dados.
(Inteiros, Caracter, Real).• Linguagem estruturada(apesar da
restrição de não ser formalmente)• C é uma linguagem para programadores
profissionais.• Inicialmente utilizada para fazer
programas de sistemas.– Sistemas Operacionais– Interpretadores– Editores– Programas de planilhas eletrônicas– Compiladores– Gerenciador de Banco de Dados
Nível mais alto Ada
Modula-2
Pascal
Cobol
Fortran
Basic
Médio Nível C++
C
Forth
Nível mais baixo Macro Assember
Assembler
Prof. Ana Emilia de Melo Queiroz 6
Compiladores X Interpretadores A Biblioteca e a LinkEdição
• Referem-se ao modo como um programa é executado.• Um interpretador lê o código-fonte do seu programa uma linha por vez
executando a instrução específica contida nessa linha.• Um compilador lê o programa inteiro e converte-o para código-objeto. O
código Objeto é uma tradução do código fonte do programa em uma forma que o computador possa executar diretamente.
• O código objeto também conhecido como código de máquina• Todo Compilador C vem com a biblioteca C padrão.• Muitas das funções que se precisa implementar já estão na biblioteca C
padrão. Elas agem com blocos básicos que o programador pode combinar.• Se o programador escrever uma função que irá utilizar muitas vezes, ela
pode ser colocada em uma biblioteca.
Prof. Ana Emilia de Melo Queiroz 7
Compilação Separada e Mapa de Memória
• Muitos programas C podem estar contidos num mesmo arquivo.• Caso o tamanho cresça muito ele deve ser dividido em vários arquivos, os
quais podem se compilados separadamente.• Quando todos os arquivos estiverem todos compilados eles serão
linkeditados para formar o código-objeto completo.• O gerenciamento da memória é feita da seguinte forma:
– Quatro regiões de memória, que possuem funções específicas– A primeira contém o código-fonte– A segunda contém as variáveis globais– A terceira contém a pilha
• Possui os endereços de retorno• Argumentos para funções e variáveis locais
– A quarta contém o Heap – Estrutura de dados.• Área de alocação dinâmica de C, que podem ser utilizadas em listas encadeadas e
árvores.
Prof. Ana Emilia de Melo Queiroz 8
• As expressões são formadas pelos elementos básicos de C. Dados e operadores, os dados podem ser representados por variáveis ou constantes.
• Os principais tipos de C são:
tipo bytes escala
char 1 -128 a 127 int 2 -32.768 a 32.767 float 4 3.4e-38 a 3.4e+38 double 8 1.7e-308 a 1.7e+308
Long ou Long int (4 bytes)Unsigned Char (0 a 255)Unsigned int (0 a 65.535) obs: int tem sempre o tamanho da palavra da máquina
Prof. Ana Emilia de Melo Queiroz 9
Comandos básicos
Instruções de E/S
Entrada de
DadosProcessamento
de dados
Saída de
Dados
Prof. Ana Emilia de Melo Queiroz 10
Variável• Variável: “objeto” que pode assumir diversos valores;• espaço de memória de um certo tipo de dado associado a um nome para
referenciar seu conteúdo Main ( )
{ int idade; idade = 30;
printf (“ A idade é : %d”, idade);}
Prof. Ana Emilia de Melo Queiroz 11
Nomes e declaração de Variáveis• Quantos caracteres quiser (32);• comece com letras ou sublinhado:
• Seguidos de letras, números ou sublinhados• C é sensível ao caso:
• peso <> Peso <> pEso • não podemos definir um identificador com o mesmo nome que uma palavra
chave• auto static extern int long if while do ......
• Instrução para reservar uma quantidade de memória para um certo tipo de dado, indicando o nome pelo qual a área será referenciada >> tipo nome-da-variável; ou>> tipo nome1, nome2,...,nomenEX: char nome; int idade, num;
Prof. Ana Emilia de Melo Queiroz 12
Constantes, Hexadecimais, Octais, String, Caracteres e Barra invertida.
• Referem-se a valores fixos que o programa não pode alterar.– Podem ser de qualquer tipo de dados básicos– Sua representação depende do seu tipo.– Constantes de caractere são envolvidas por aspas simples. Ex:’a’– Constantes inteiras são preenchidas com números fracionários. Ex: 10 e -100– Constantes em ponto flutuante requerem o ponto decimal seguido pela parte
fracionária do número. Ex: 11.123– C também que seja utilizada uma notação científica para representar números
em ponto flutuante.– Existem dois tipos de números em ponto flutuante:
• float• double.
– Constantes Hexadecimais e Octais• Hexadecimal – sistema numérico de base 16 dígitos de 0 a 9 + os caracteres A a F,
que representam os números 10, 11, 12, 13, 14 e 15.• Octal – sistema numérico de base 8 – dígitos de 0 a 7
Prof. Ana Emilia de Melo Queiroz 13
Linguagem Programação C
• Estrutura Básica de um Programa em C• Meu primeiro programa• A função printf• Códigos Especiais• Códigos printf()
Prof. Ana Emilia de Melo Queiroz 14
Estrutura Básica da Linguagem
• main(){}
• main () {}• main ()
{ }
• mainmain(()){{}}
• mainmain() {}() {}
Prof. Ana Emilia de Melo Queiroz 15
Primeiro Programa
• Main(){
printf (“Meu primeiro programa”);}
• Main(){printf (“Meu primeiro programa”);}
Prof. Ana Emilia de Melo Queiroz 16
A função printfprintf (“Meu primeiro programa”,<argumentos>);
printf (“Este é o número: %d”,2);– Este é o número: 2
printf (“%s esta a %d milhões de milhas\ndo sol.”,”Venus”,67);– Venus esta a 67 milhões de milhas
do sol.
printf (“A letra %c ”,’j’);printf (“Pronuncia-se %s”,”jota”);
– A letra j procuncia-se jota
Prof. Ana Emilia de Melo Queiroz 17
Códigos Especiais
• \n Nova linha• \r Retorno do cursor• \t Tab• \b Retrocesso (backspace)• \” Aspas• \\ Barra• \f Salta página de formulário• \0 Nulo (zero)
Prof. Ana Emilia de Melo Queiroz 18
Códigos Printf• %c Caracter Simples• %d Decimal• %e Notação Científica• %f Ponto Flutuante• %g %e ou %f, o mais curto• %o Octal• %s Cadeia de caracteres• %u Decimal sem sinal• %x Hexadecimal• %ld Decimal Longo• %lf Ponto Flutuante Longo (Double)
Prof. Ana Emilia de Melo Queiroz 19
Printf – Tamanho na Impressão
main(){
printf(“Os alunos são %2d.\n”,350);printf(“Os alunos são %4d.\n”,350);
printf(“Os alunos são %5d.\n”,350);}
A saída seráOs alunos são 350.Os alunos são 350.Os alunos são 350.
Prof. Ana Emilia de Melo Queiroz 20
Printf – Tamanho na Impressão
main(){
printf(“%4.2f\n”,3456.78);printf(“%3.2f\n”,3456.78);printf(“%3.1f\n”,3456.78);printf(“%10.3f\
n”,3456.78);
}
A saída seráA saída será3456.783456.783456.783456.783456.73456.7
3456.7803456.780
Prof. Ana Emilia de Melo Queiroz 21
Printf – Complementando com 0
main(){
printf(“\n%04d”,21);printf(“\n%06d”,21);
printf(“\n%6.4d”,21); printf(“\n%6.0d”,21);}
A saída seráA saída será00210021000021000021 00210021
2121
Prof. Ana Emilia de Melo Queiroz 22
Printf – Imprimindo Caracters
• printf(“%d %c %x %o \n”, ‘A’, ‘A’, ‘A’, ‘A’ );Saída = 65 A 41 101
• printf(“%c %c %c %c \n”, ‘A’, 65, 0x41, 0101 );Saída = A A A A
Prof. Ana Emilia de Melo Queiroz 23
Estruturas de Controle
• Estruturas de seleção ou decisão– Estrutura de Seleção Simples– Estrutura de Seleção Composta– Estrutura de Seleção Encadeada– Estrutura de seleção de Múltipla Escolha
Prof. Ana Emilia de Melo Queiroz 24
Enunciado – Seleção Simples
• Verifique se um número fornecido pelo usuário é ímpar. Se for exiba a mensagem: “O número é ímpar”.
#include <conio.c>main(){ int mnum; printf("Informe um número"); scanf("%d", &mnum); if (mnum % 2 == 1) printf("O número %d é ímpar.",mnum); getch();}
Prof. Ana Emilia de Melo Queiroz 25
Enunciado – Seleção Composta
• A empresa X Ltda. Concedeu bônus de 20% do valor do salário a todos funcionários com tempo de trabalho na empresa igual ou superior a cinco anos e de 10% aos demais. Calcular e exibir o valor do bônus.
• Percebem a condição e o bloco de instrução respectivo?• Programa
Prof. Ana Emilia de Melo Queiroz 26
Sel. Composta - Programa#include <conio.c>main(){ int mtem; float msal, mbonus; printf("Informe o tempo de serviço\n"); scanf("%d", &mtem); printf("Informe o salário\n"); scanf("%f", &msal);
if (mtem >= 5) mbonus = msal * 0.2; else mbonus = msal * 0.1;
printf("O bônus é de: %10.2f",mbonus); getch();}
Prof. Ana Emilia de Melo Queiroz 27
Enunciado – Seleção Encadeada
• Faça algoritmo que receba 03 valores que representarão os lados de um triângulo. Verifique se os valores formam um triângulo e classifique esse triângulo como:– Eqüilátero - três lados iguais– Isóscele - dois lados iguais– Escaleno - três lados diferentes– Lembre-se que para formar um triângulo nenhum dos
lados pode ser igual a zero e um lado não pode ser maior que a soma dos outros dois.
Prof. Ana Emilia de Melo Queiroz 28
main() { int mladoa, mladob, mladoc; printf("Informe os lados de um triângulo\n"); scanf("%d %d %d", &mladoa, &mladob, &mladoc); if (mladoa == 0 || mladob == 0 || mladoc == 0) printf("A figura não é um triângulo\n"); else { if (mladoa > mladob+mladoc || mladob > mladoa+mladoc || mladoc >mladoa+mladob) printf("A figura não é um triângulo\n"); else { if (mladoa == mladob && mladob == mladoc) printf("A figura é um triângulo equilátero\n"); else { if (mladoa == mladob || mladoa == mladoc || mladob == mladoc) printf("A figura é um triângulo isóceles\n"); else printf("A figura é um triângulo escaleno\n"); } } }}
Prof. Ana Emilia de Melo Queiroz 29
Seleção Múltipla Escolha…opcao = getche();switch(opcao) {
case ‘A’ :printf(“Você seleconou opção A”); break;
case ‘E’ :printf(“Você seleconou opção E”); break;
case ‘X’ :printf(“Você seleconou opção X”); break;
case ‘I’ :printf(“Você seleconou opção I”); break;
defaultprintf(“Escolha incorreta”);
}…
Prof. Ana Emilia de Melo Queiroz 30
Algumas funções em C
• scanf(“%d %c”, &a, &b);Lê um tipo de variável (d,c) e armazena em um endereço de memória (variável a, b)
• Car = getch()Lê um caracter do teclado (Enter desnecessário). Não echoa na tela.
• Car = getche()Lê um caracter do teclado (Enter desnecessário). Eechoa na tela.
• Car = getchar()Lê próximo caracter de entrada. Termina com Enter. (stdio.h)
• putchar(car)Imprime um caracter de entrada. Termina com Enter. (stdio.h)
Prof. Ana Emilia de Melo Queiroz 31
Estruturas de Repetição
• Laço while• Laço do – while• Laço for
– Repetição (laço) deve ser finito– Quando se usa teste, em algum momento os
comandos modificam a condição de teste para torná-la falsa.
Prof. Ana Emilia de Melo Queiroz 32
Laço While
…while (conta < 10) {
total+=conta;}Printf(“Total = %d”, total);…
Prof. Ana Emilia de Melo Queiroz 33
Laço while• Ler 850 números
fornecidos pelo usuário e calcular média.
main() { float soma, num, media; int cont ; soma = 0; cont = 0; while (cont < 850) { scanf(“%d”, &num); soma += num; cont += 1; } media = media / cont; printf(“A média é: %d“,media);}
Prof. Ana Emilia de Melo Queiroz 34
Laço do - while
……do {do {
total+=conta;total+=conta;} while (conta < 10) } while (conta < 10) Printf(“Total = %d”, Printf(“Total = %d”,
total);total);……
Prof. Ana Emilia de Melo Queiroz 35
Laço do - while
• Ler 850 Ler 850 números números fornecidos pelo fornecidos pelo usuário e usuário e calcular média.calcular média.
main() { float soma, num, media; int cont ; soma = 0; cont = 0; do { scanf(“%d”, &num); soma += num; cont += 1; } while (cont >= 850) media = media / cont; printf(“A média é: %d“,media);}
Prof. Ana Emilia de Melo Queiroz 36
Laço for
• SintaxeSintaxeFor (conta = 0; conta < 10; conta +For (conta = 0; conta < 10; conta +
+)+) Inicio Teste Inicio Teste IncrementoIncremento
• Flexibilidades
Prof. Ana Emilia de Melo Queiroz 37
Laço for• Ler 850 Ler 850
números números fornecidos pelo fornecidos pelo usuário e usuário e calcular média.calcular média.
main() { float soma, num, media; int cont ; soma = 0; for (cont = 0; cont < 850, cont++) { scanf(“%d”, &num); soma += num; } media = media / cont; printf(“A média é: %d“,media);}
Prof. Ana Emilia de Melo Queiroz 38
Laço for - flexibilidades
• Qualquer expressão do laço for pode ter várias instruções separadas por vírgula;For (x=0, y=0; x+y < 100; x++, y=y+1)
• Podemos usar caracteres em vez de inteirosFor (ch=a; ch <= z; ch++)
Prof. Ana Emilia de Melo Queiroz 39
Laço for - Flexibilidades• Podemos usar chamadas a funções em qualquer uma
das expressões do laçoFor (ch=getch(); ch != `X`; ch=getch()))
• Qualquer parte do laço for pode ser omitida mas os ; devem permanecerFor ( ; (ch = getch()) != `X`; )
For ( ; (ch = getch()) != `X`; printf(“%c”,c+1))
For ( ; ; ) = Laço infinito