Вы находитесь на странице: 1из 11

Aula 1 - INTRODUO

Uma das grandes vantagens do C que ele possui tanto caractersticas de "alto nvel" quanto de "baixo nvel". O C nasceu na dcada de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional UNIX. O C derivado de uma outra linguagem: o B, criado por Ken Thompson. O B, por sua vez, veio da linguagem BCPL, inventada por Martin Richards. O C uma linguagem de programao genrica que utilizada para a criao de programas diversos como processadores de texto, planilhas eletrnicas, sistemas operacionais, programas de comunicao, programas para a automao industrial, gerenciadores de bancos de dados, programas de projeto assistido por computador, programas para a soluo de problemas da Engenharia, Fsica, Qumica e outras Cincias, etc ... bem provvel que o Navegador que voc est usando para ler este texto tenha sido escrito em C ou C++. Estudaremos a estrutura do ANSI C, o C padronizado pela ANSI. Veremos ainda algumas funes comuns em compiladores para alguns sistemas operacionais. Quando no houver equivalentes para as funes em outros sistemas, apresentaremos formas alternativas de uso dos comandos. Sugerimos que o aluno realmente use o mximo possvel dos exemplos, problemas e exerccios aqui apresentados, gerando os programas executveis com o seu compilador. Quando utilizamos o compilador aprendemos a lidar com mensagens de aviso, mensagens de erro, bugs, etc. Apenas ler os exemplos no basta. O conhecimento de uma linguagem de programao transcende o conhecimento de estruturas e funes. O C exige, alm do domnio da linguagem em si, uma familiaridade com o compilador e experincia em achar "bugs" nos programas. importante ento que o leitor digite, compile e execute os exemplos apresentados.

O C "Case Sensitive" Vamos comear o nosso curso ressaltando um ponto de suma importncia: o C "Case Sensitive", isto , maisculas e minsculas fazem diferena. Se declarar uma varivel com o nome soma ela ser diferente de Soma, SOMA, SoMa ou sOmA. Da mesma maneira, os comandos do C if e for, por exemplo, s podem ser escritos em minsculas pois seno o compilador no ir interpret-los como sendo comandos, mas sim como variveis.

Meu primeiro programa em C Vejamos um primeiro programa em C: Compilando e executando este programa voc ver que ele coloca a mensagem Ola! Mundo! na tela.

Vamos analisar o programa por partes. A linha #include <stdio.h> diz ao compilador que ele deve incluir o arquivocabealho stdio.h. Neste arquivo existem declaraes de funes teis para entrada e sada de dados (std = standard, padro em ingls; io = Input/Output, entrada e sada ==> stdio = Entrada e sada padronizadas). Toda vez que voc quiser usar uma destas funes deve-se incluir este comando. O C possui diversos Arquivos-cabealho. Quando fazemos um programa, uma boa idia usar comentrios que ajudem a elucidar o funcionamento do mesmo. No caso acima temos um comentrio: /* Um Primeiro Programa */. O compilador C desconsidera qualquer coisa que esteja comeando com /* e terminando com */. Um comentrio pode, inclusive, ter mais de uma linha. A linha int main() indica que estamos definindo uma funo de nome main. Todos os programas em C tm que ter uma funo main, pois esta funo que ser chamada quando o programa for executado. O contedo da funo delimitado por chaves { }. O cdigo que estiver dentro das chaves ser executado seqencialmente quando a funo for chamada. A palavra int indica que esta funo retorna um inteiro. O que significa este retorno ser visto posteriormente, quando estudarmos um pouco mais detalhadamente as funes

do C. A ltima linha do programa, return(0); , indica o nmero inteiro que est sendo retornado pela funo, no caso o nmero 0. A nica coisa que o programa realmente faz chamar a funo printf(), passando a string (uma string uma seqncia de caracteres, como veremos brevemente) "Ola! Mundo!\n" como argumento. por causa do uso da funo printf() pelo programa que devemos incluir o arquivo- cabealho stdio.h . A funo printf() neste caso ir apenas colocar a string na tela do computador. O \n uma constante chamada de constante barra invertida. No caso, o \n a constante barra invertida de "new line" e ele interpretado como um comando de mudana de linha, isto , aps imprimir Ola! Mundo! o cursor passar para a prxima linha. importante observar tambm que os comandos do C terminam com ; . Podemos agora tentar um programa mais complicado:

Vamos entender como o programa acima funciona. So declaradas duas variveis chamadas Dias e Anos. A primeira um int (inteiro) e a segunda um float (ponto flutuante). As variveis declaradas como ponto flutuante existem para armazenar nmeros que possuem casas decimais, como 5,1497.

feita ento uma chamada funo printf(), que coloca uma mensagem na tela. Queremos agora ler um dado que ser fornecido pelo usurio e coloc-lo na varivel inteira Dias. Para tanto usamos a funo scanf(). A string "%d" diz funo que iremos ler um inteiro. O segundo parmetro passado funo diz que o dado lido dever ser armazenado na varivel Dias. importante ressaltar a necessidade de se colocar um & antes do nome da varivel a ser lida quando se usa a funo scanf(). O motivo disto s ficar claro mais tarde. Observe que, no C, quando temos mais de um parmetro para uma funo, eles sero separados por vrgula. Temos ento uma expresso matemtica simples que atribui a Anos o valor de Dias dividido por 365.25 (365.25 uma constante ponto flutuante 365,25). Como Anos uma varivel float o compilador far uma converso automtica entre os tipos das variveis (veremos isto com detalhes mais tarde). A segunda chamada funo printf() tem trs argumentos. A string "\n\n%d dias equivalem a %f anos.\n" diz funo para pular duas linhas, colocar um inteiro na tela, colocar a mensagem " dias equivalem a ", colocar um valor float na tela, colocar a mensagem " anos." e pular outra linha. Os outros parmetros so as variveis, Dias e Anos, das quais devem ser lidos os valores do inteiro e do float, respectivamente.

AUTO AVALIAO 1 - O que faz o seguinte programa?


#include <stdio.h> #include <conio.h> int main() { int x; scanf("%d",&x); printf("%d",x); _getch(); }

2 - Compile e execute o programa acima.

Vamos agora fazer uma abordagem inicial s duas funes que j temos usado para fazer a entrada e sada. - printf A funo printf() tem a seguinte forma geral: printf (string_de_controle,lista_de_argumentos); Teremos, na string de controle, uma descrio de tudo que a funo vai colocar na tela. A string de controle mostra no apenas os caracteres que devem ser colocados na tela, mas tambm quais as variveis e suas respectivas posies. Isto feito usando-se os cdigos de controle, que usam a notao %. Na string de controle indicamos quais, de qual tipo e em que posio esto as variveis a serem apresentadas. muito importante que, para cada cdigo de controle, tenhamos um argumento na lista de argumentos. Apresentamos agora alguns dos cdigos %:

Cdigo %d %f %c %s %%

Significado Inteiro Float Caractere String Coloca na tela um %

Vamos ver alguns exemplos de printf() e o que eles exibem: printf ("Teste %% %%") -> "Teste % %" printf ("%f",40.345) -> "40.345" printf ("Um caractere %c e um inteiro %d",'D',120) -> "Um caractere D e um inteiro 120" printf ("%s e um exemplo","Este") -> "Este e um exemplo"

printf ("%s%d%%","Juros de ",10) -> "Juros de 10%" Maiores detalhes sobre a funo printf() (incluindo outros cdigos de controle) sero vistos posteriormente, mas podem ser consultados de antemo pelos interessados Cdigo %c %d %i %e %E %f %g %G %o %s %u %x %X %% %p Formato Um caracter (char) Um nmero inteiro decimal (int) O mesmo que %d Nmero em notao cientfica com o "e"minsculo Nmero em notao cientfica com o "e"maisculo Ponto flutuante decimal Escolhe automaticamente o melhor entre %f e %e Escolhe automaticamente o melhor entre %f e %E Nmero octal String Decimal "unsigned" (sem sinal) Hexadecimal com letras minsculas Hexadecimal com letras maisculas Imprime um % Ponteiro

- scanf O formato geral da funo scanf() : scanf (string-de-controle,lista-de-argumentos);

Usando a funo scanf() podemos pedir dados ao usurio. Um exemplo de uso, pode ser visto acima. Mais uma vez, devemos ficar atentos a fim de colocar o mesmo nmero de argumentos que o de cdigos de controle na string de controle. Outra coisa importante lembrarmos de colocar o & antes das variveis da lista de argumentos. No vamos justificar isto agora, mas veremos depois a razo para este procedimento. Maiores detalhes sobre a funo scanf() sero vistos posteriormente, mas podem ser consultados de antemo pelos interessados.

Tipo
char unsigned char signed char int unsigned int signed int short int unsigned short int signed short int long int signed long int unsigned long int float double long double

Formato Num de bits para leitura com scanf


8 8 8 16 16 16 16 16 16 32 32 32 32 64 80 %c %c %c %i %u %i %hi %hu %hi %li %li %lu %f %lf %Lf

Intervalo Inicio
-128 0 -128 -32.768 0 -32.768 -32.768 0 -32.768 -2.147.483.648 -2.147.483.648 0 3,4E-38 1,7E-308 3,4E-4932

Fim
127 255 127 32.767 65.535 32.767 32.767 65.535 32.767 2.147.483.647 2.147.483.647 4.294.967.295 3.4E+38 1,7E+308 3,4E+4932

Introduo s Funes Uma funo um bloco de cdigo de programa que pode ser usado diversas vezes em sua execuo. O uso de funes permite que o programa fique mais legvel, mais bem estruturado. Um programa em C consiste, no fundo, de vrias funes colocadas juntas. Abaixo o tipo mais simples de funo:

Este programa ter o mesmo resultado que o primeiro exemplo da seo anterior. O que ele faz definir uma funo mensagem() que coloca uma string na tela e retorna 0. Esta funo chamada a partir de main() , que, como j vimos, tambm uma funo. A diferena fundamental entre main e as demais funes do problema que main uma funo especial, cujo diferencial o fato de ser a primeira funo a ser executada em um programa. - Argumentos Argumentos so as entradas que a funo recebe. atravs dos argumentos que passamos parmetros para a funo. J vimos funes com argumentos. As funes printf() e scanf() so funes que recebem argumentos. Vamos ver um outro exemplo simples de funo com argumentos:

Na definio de square() dizemos que a funo receber um argumento inteiro x. Quando fazemos a chamada funo, o inteiro num passado como argumento. H alguns pontos a observar. Em primeiro lugar temos de satisfazer aos requisitos da funo quanto ao tipo e quantidade de argumentos quando a chamamos. Apesar de existirem algumas converses de tipo, que o C faz automaticamente, importante ficar atento. Em segundo lugar, no importante o nome da varivel que se passa como argumento, ou seja, a varivel num, ao ser passada como argumento para square() copiada para a varivel x. Dentro de square() trabalha-se apenas com x. Se mudarmos o valor de x dentro de square() o valor de num na funo main() permanece inalterado. Vamos dar um exemplo de funo de mais de uma varivel. Repare que, neste caso, os argumentos so separados por vrgula e que deve-se explicitar o tipo de cada um dos argumentos, um a um. Note, tambm, que os argumentos passados para a funo no necessitam ser todos variveis porque mesmo sendo constantes sero copiados para a varivel de entrada da funo.

- Retornando valores Muitas vezes necessrio fazer com que uma funo retorne um valor. As funes que vimos at aqui estavam retornando o nmero 0. Podemos especificar um tipo de retorno indicando-o antes do nome da funo. Mas para dizer ao C o que vamos retornar precisamos da palavra reservada return. Sabendo disto fica fcil fazer uma funo para multiplicar dois inteiros e que retorna o resultado da multiplicao. Veja:

Veja que, como prod retorna o valor de 12 multiplicado por 7, este valor pode ser usado em uma expresso qualquer. No programa fizemos a atribuio deste resultado varivel saida, que posteriormente foi impressa usando o printf. Uma observao adicional: se no especificarmos o tipo de retorno de uma funo, o compilador C automaticamente supor que este tipo inteiro. Porm, no uma boa prtica no se especificar o valor de retorno e, neste curso, este valor ser sempre especificado.

Com relao funo main, o retorno sempre ser inteiro. Normalmente faremos a funo main retornar um zero quando ela executada sem qualquer tipo de erro. Mais um exemplo de funo, que agora recebe dois floats e tambm retorna um float::

- Forma geral Apresentamos aqui a forma geral de uma funo: tipo_de_retorno nome_da_funo (lista_de_argumentos) { cdigo_da_funo } AUTO AVALIAO Escreva uma funo que l dois inteiros, some os dois inteiros em uma funo e retorne o valor da soma.

Вам также может понравиться