400 likes | 657 Views
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
E N D
Linguagem C Prof. Ana Emilia de Melo Queiroz
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
Sumário • 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. Prof. Ana Emilia de Melo Queiroz
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
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 Prof. Ana Emilia de Melo Queiroz
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
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
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
Comandos básicos Instruções de E/S Saída de Dados Entrada de Dados Processamento de dados Prof. Ana Emilia de Melo Queiroz
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
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,...,nomen EX: char nome; int idade, num; Prof. Ana Emilia de Melo Queiroz
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
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
Estrutura Básica da Linguagem • main(){} • main () {} • main (){ } • main(){} • main() {} Prof. Ana Emilia de Melo Queiroz
Primeiro Programa • Main(){ printf (“Meu primeiro programa”);} • Main(){printf (“Meu primeiro programa”);} Prof. Ana Emilia de Melo Queiroz
A função printf printf (“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 milhasdo sol. printf (“A letra %c ”,’j’); printf (“Pronuncia-se %s”,”jota”); • A letra j procuncia-se jota Prof. Ana Emilia de Melo Queiroz
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
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
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
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á 3456.78 3456.78 3456.7 3456.780 Prof. Ana Emilia de Melo Queiroz
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á 0021 000021 0021 21 Prof. Ana Emilia de Melo Queiroz
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
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
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
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
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
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
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
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; default printf(“Escolha incorreta”); } … Prof. Ana Emilia de Melo Queiroz
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
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
… while (conta < 10) { total+=conta; } Printf(“Total = %d”, total); … Laço While Prof. Ana Emilia de Melo Queiroz
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
Laço do - while … do { total+=conta; } while (conta < 10) Printf(“Total = %d”, total); … Prof. Ana Emilia de Melo Queiroz
Laço do - while 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); } • Ler 850 números fornecidos pelo usuário e calcular média. Prof. Ana Emilia de Melo Queiroz
Laço for • Sintaxe For (conta = 0; conta < 10; conta ++) • Inicio Teste Incremento • Flexibilidades Prof. Ana Emilia de Melo Queiroz
Laço for • Ler 850 números fornecidos pelo usuário e 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
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
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 Prof. Ana Emilia de Melo Queiroz