Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Introdução à Linguagem de Programação C: Conceitos Básicos e Exemplos, Esquemas de Programação em C

Uma introdução abrangente à linguagem de programação c, explorando conceitos fundamentais como variáveis, funções, estruturas de controle e entrada/saída. O texto é enriquecido com exemplos práticos de código, facilitando a compreensão dos conceitos e a aplicação prática da linguagem. A sintaxe básica, a estrutura de um programa em c, a utilização de bibliotecas e a criação de funções, além de apresentar exemplos de operações matemáticas e estruturas de repetição.

Tipologia: Esquemas

2020

Compartilhado em 31/10/2024

patricia-mendes-53
patricia-mendes-53 🇧🇷

5 documentos

1 / 18

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Introdução da linguagem C
C é uma linguagem de programação de propósito geral, estruturada, imperativa, procedural,
de baixo nível e padronizada, criada em 1972, por Dennis Ritchie, nos laboratórios Bell,
para ser usada no sistema operacional UNIX. Desde então, espalhou-se por muitos outros
sistemas operativos, e tornou-se uma das linguagens de programação mais usadas.
C tem como ponto fraco, a falta de proteção que ao programador. Praticamente tudo
que se expressa em um programa em C, pode ser executado. Os resultados são muitas
vezes totalmente inesperados, e os erros, difíceis de encontrar. Muitas linguagens de
programação foram influenciadas por C, sendo que a mais utilizada atualmente é C++, que
por sua vez foi uma das inspirações para Java.
Introdução da linguagem C++
O C++ foi inicialmente desenvolvido por Bjarne Stroustrup dos Bell Labs durante a década
de 1980 com o objetivo de melhorar a linguagem de programação C ainda que mantendo
máxima compatibilidade.
Ainda em 1983 o nome da linguagem foi alterado de C with Classes para C++. Novas
características foram adicionadas, como funções virtuais, sobrecarga de operadores e
funções, referências, constantes, gerenciamento manual de memória, melhorias na
verificação de tipo de dado e estilo de comentário de código de uma linha (//).
As vantagens são as possibilidades em programação de alto e baixo nível que não está sob
o domínio de uma empresa (em contraste do Java Sun ou Visual Basic Microsoft) e a
compatibilidade com C, resultando em vasta base de códigos.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Pré-visualização parcial do texto

Baixe Introdução à Linguagem de Programação C: Conceitos Básicos e Exemplos e outras Esquemas em PDF para Programação em C, somente na Docsity!

Introdução da linguagem C

C é uma linguagem de programação de propósito geral, estruturada, imperativa, procedural,

de baixo nível e padronizada, criada em 1972, por Dennis Ritchie, nos laboratórios Bell,

para ser usada no sistema operacional UNIX. Desde então, espalhou-se por muitos outros sistemas operativos, e tornou-se uma das linguagens de programação mais usadas.

C tem como ponto fraco, a falta de proteção que dá ao programador. Praticamente tudo

que se expressa em um programa em C, pode ser executado. Os resultados são muitas

vezes totalmente inesperados, e os erros, difíceis de encontrar. Muitas linguagens de programação foram influenciadas por C, sendo que a mais utilizada atualmente é C++, que

por sua vez foi uma das inspirações para Java.

Introdução da linguagem C++

O C++ foi inicialmente desenvolvido por Bjarne Stroustrup dos Bell Labs durante a década

de 1980 com o objetivo de melhorar a linguagem de programação C ainda que mantendo

máxima compatibilidade.

Ainda em 1983 o nome da linguagem foi alterado de C with Classes para C++. Novas

características foram adicionadas, como funções virtuais, sobrecarga de operadores e

funções, referências, constantes, gerenciamento manual de memória, melhorias na

verificação de tipo de dado e estilo de comentário de código de uma linha (//).

As vantagens são as possibilidades em programação de alto e baixo nível que não está sob

o domínio de uma empresa (em contraste do Java — Sun ou Visual Basic — Microsoft) e a

compatibilidade com C, resultando em vasta base de códigos.

Informação geral

Os programas de computador ou softwares, processadores de textos planilhas,

navegadores para internet e até mesmo o sistema operacional Windows, são arquivos cujas

as instruções dizem ao computador como realizar determinadas tarefas.

No ambiente Windows os arquivos com extensões EXE e COM contém comandos que o

computador pode executar. Em outras palavras esses arquivos de programas dão ao

computador instruções especificas para que ele realize determinada tarefa.

Para criar programas usa se uma linguagem considerada de alto nível como o C++ e

especifica as instruções que o computador que o computador deve executar e em seguida

por meio de um programa especial chamado compilador converter se essa instrução de

programação na linguagem da máquina (binaria) que o computador compreende.

Tipos de dados

Definição de dados: são informações que podem ser números ou caracteres com os quais o programa opera.

Definição de variáveis: representam localizações de memória onde são armazenados valores que podem ser modificados pelo programa.

Variáveis: podem conter letras, números e caracteres porem um caractere não pode ser um numero, exemplo: pm_01 ou pm01 é permitido , mas 01_pm não é permitido. Letras maiúsculas são diferentes de minúsculas.

Observação: o manipulador endl é utilizado para passar o cursor para a próxima linha.

Funções definidas pelo usuário

É uma sessão de código independente é autônoma escrita para desempenhar uma tarefa especifica. Deve conter protótipo e definição da função;

Sintaxe:

Tipo_retorno nome_função (tipo_arg nome ..., tipo_arg nomen);

Tipo retorno: variável que a função retornará. Pode ser char , int , float , double e void, se não retornará a nada.

Nome_função: descreve que a função faz;

Tipo-arg: tipo e nome das variáveis que serão para a função. Pode ser char, int, float.

Nomen: double, void.

Sempre termina com ; (ponto e vírgula).

Int main (void)

Todo o programa em C está escrito dentro da função main.

main é a primeira função a ser executada por qualquer programa em C mesmo que tenha outras funções escritas antes.

Há compiladores que interpretam esta função mesmo incompleta, ou seja, você também

poderá escrever está função escrevendo

main ()

int main ()

main (void)

Mas para mantar a portabilidade e evitar erros desnecessários de compilação o melhor a

se fazer é declarar ela inteira int main (void)

Devemos sempre dar preferencias as letras minúsculas para não gerar um erro no seu código.

Bloco de dados

Os bloco de dados são utilizados para determinar todas as linhas de código que comandos

ou funções devem executar de uma vez.

O bloco de dados é determinado pelo abrir e fechar chaves ({ }). Você abre chaves aonde

se deve começar a executar e fecha aonde se deve terminar a execução. Em um programa

pode haver mais de uma chave e o mesmo número de chave aberta ser o de chaves fechadas.

Qualquer programa é determinado pelo que está dentro das chaves. O que está dentro das

chaves pode ser uma função, uma palavra reservada (como: if, else, for, ...) ou processo ( operação matemática).

Em C toda chamada de função, processo ou algumas palavras reservadas devem terminar

a linha com um ponto e vírgula (;).

Importando uma biblioteca em C++

A importação de uma biblioteca é dada pelo comando INCLUDE (incluir) seguido da

biblioteca entre os sinais de menor (<) e maior (>).

Porém, devemos notar que existem diferenças entre a importação de bibliotecas de C e de

C++.

Em C, a importação de bibliotecas são mais simples, bastando acrescentar para cada

biblioteca um include em uma linha diferente e o nome da biblioteca seguido de ponto H

(.h) - .h é a extensão do arquivo da biblioteca que vem da palavra inglesa HEADER

(cabeçalho) - se você esquecer de colocá-lo o programa não será compilado.

No exemplo abaixo, vamos incluir duas bibliotecas padrões de C.

1.#include <stdio.h>

2.#include <stdlib.h>

Como podem ver, cada biblioteca foi incluída em uma linha.

Em C++ a importação de bibliotecas é um pouco diferente. O comando de importação continua sendo o include, mas neste caso não usaremos o ponto h (.h) no final da

bibliotecas legitimamente.

Após importar uma biblioteca por linha no final desta lista devemos mostrar o tipo de

funções usaremos. Na grande maioria dos casos usaremos a funções padrões de cada biblioteca. Podemos fazer isso facilmente digitando a palavra **using *** indicando o espaço

de nome (namespace) standard (std) que quer dizer padrão em inglês.

Não se esqueça a palavra reservada using necessita terminar a linha com o ponto e vírgula (;)

#include <stdlib.h> // biblioteca em C

#include // biblioteca em C++

Using namespace std;

As bibliotecas de C são diferentes das bibliotecas de C++ apensar de muitos compiladores

de C++ suportarem as bibliotecas de C, nenhum compilador exclusivamente de C

suportam as bibliotecas C++.

Variáveis

A parte mais importante de qualquer programa é o processo. Uma variável é uma

informação que você pode usar dentro do programa.

Está informação está associada comum lugar especifico da memória (isso é feito pelo

compilador)

Cada variável utiliza uma determinada quantidade de armazenamento em memória. A

maneira como sabemos quantos bytes são utilizados é pelo tipo de variável. Variáveis do

mesmo tipo utilizam o mesmo número de bytes, não interessando qual é o valor que a

variável armazena.

Um dos tipos utilizados para armazenar números é o int que é usado para armazenar

números inteiros. Outro tipo é o char usado para armazenar caracteres (um símbolo, uma

letra, sinais, entre outros). Um char é armazenado em 1 byte de memoria

O processamento em geral é dado de forma genérico, ou seja por variáveis.

Cada variável tem um alcance e forma diferente de trabalhar o dado nela gravado. Por

exemplo se determinarmos uma variável inteira você jamais poderá digitar um número

decimal, pois todos os números depois do sinal decimal serão ignorados. Se formos

escrever um número decimal devemos utilizar o ponto (.) ao invés da virgula (,) se for

incremento=10; incremento++; resto=10%3; printf ("soma = %d\n", soma); printf ("subtracao = %d\n", subtracao); printf ("multiplicacao = %d\n", multiplicacao); printf ("divisao = %d\n", divisao); printf ("decremento = %d\n", decremento); printf ("incremento = %d\n", incremento); printf ("resto = %d\n", resto); return 0; }

Variáveis são endereços de memória na qual podemos atribuir ou mudar o valor.

A declaração da variável deve proceder da seguinte maneira:

1º especificar o tipo de variável

2º nomear a variável

Obs. Não podemos esquecer que o C / C++ é case sensitive, ou seja, ele diferencia as letras maiúsculas das minúsculas.

Por exemplo, x não é a mesma coisa de X.

Um outro cuidado que devemos ter é não começar uma variável por número, mas podemos terminá-la.

Exemplo: É errado declarar 2x, mas podemos declarar x2 ou _2x.

Como uma última precaução, não podemos usar espaços, pois o compilador pode entender como sendo outra variável não separada por vírgula e acusará um erro. No lugar do espaço, pode-se usar underline (_).

Exemplo: É errado digitar resultado da raiz, mas é correto, resultado_da_raiz.

Tipos de varáveis

O primeiro tipo é o inteiro. Declara se como int nomedavariável. O tipo inteiro c/c++ é uma variável de 16 bits (2bytes)

O segundo é o inteiro long. Declara se como long int nomedavariável. Ele é uma melhoria do inteiro comum, pois dobra o número de bits.

O outro tipo é o real ou decimal que também chamamos de ponto flutuante. Declara se

como float nomedavariável. O tipo flutuante é uma variável que tem uma precisão de 7

dígitos e consome 4 bytes.

E tem também um outro tipo que é uma melhoria do ponto flutuante, o dobro. Declaramos

como double nomedavariável. O double consome 8 bytes de memória para seu

armazenamento.

Funções

Funções são usadas para criar pequenos pedaços de códigos separados do programa

principal. Em c / c++ tudo na verdade é uma função. Int main (void) é uma função, por

exemplo.

Exceto a função Main, todas as outras funções são segundarias o que ela significa que elas podem existir ou não.

Funções são importantes porque elas retornam valores, ajudam fragmentar o código em

partes menores, mais fáceis de lidar e ainda por cima podem ser utilizadas mais de uma

vez no mesmo programa, poupando preciosos minutos de programação e inúmeras linhas

de códigos.

Criando funções sem argumentos

Funções são como variáveis que guardam inúmeras linhas de código. Se não prototipadas*, elas devem ser escritas antes da função MAIN, afim de serem compiladas primeiro para poderem ser utilizadas pela função main.

É quase o mesmo que querer comer uma maçã do pomar e quando chegar lá não tem nenhuma, você continuará com fome. Porque não tem maçãs produzidas no pomar. Seria o mesmo que querer utilizar uma função no MAIN e não tem nenhuma função produzida anteriormente.

Como havíamos dito, funções são como variáveis. Então, criamos uma função indicando o tipo de retorno (saída) que será int, float, etc..Nomeamos a função (valem as mesma regras das variáveis, ex.: Não começa nomes de funções com número) e terminamos colocando entre parênteses os argumentos. Como nossas primeiras funções não terão argumentos entre parênteses usaremos VOID (do inglês VAZIO). Todo o código da função deve estar dentro de um bloco de instrução ( { } ), mesmo que haja apenas uma linha.

Obs.: Não se usa ponto-e-vírgula no final da criação da função.

Após a função ser criada, basta chamarmos a função dentro da função principal MAIN.

Para chamá-la, apenas digitamos o nome da função e entre parênteses colocamos seus argumentos. Como esta função não tem argumentos, simplesmente colocamos nada entre os parênteses

#include #include using namespace std; void mensagem (void) //perceba que não há ponto-e-vírgula aqui! { cout <<"Ola! Eu sou uma funcao.\n"; } int main (void){ mensagem (); //chamando uma função sem argumentos system ("pause"); return 0; }

Funções que retornam valores

using namespace std; int main (void) { int nr; cout <<"Digite um numero: "; cin >> nr; cout <<"\n\n\nVoce digitou o numero: "<<nr; return 0; }

Diferentemente do scanf do C , não podemos indicar várias entradas com a função cin. Ou seja, você deve incluir um CIN para cada entrada.

Funções de saída

Funções de saída são utilizadas para interface com o usuário, ou seja, define se do pressuposto de comunicação entre a máquina e o usuário de alguma maneira. Toda comunicação da máquina e do usuário deve ser calculada pelo programador de forma a induzir o usuário a praticar determinada ação. Por exemplo se você imprimir a mensagem para o usuário digitar dois números para serem somados e quando ele apertar a tecla ENTER mostrará o resultado.

Funções de saída de C

As funções de saída de C são encontradas na biblioteca padrão de entrada/saída, a STDIO.H.

No caso, para imprimir uma mensagem basta adicionar a linha com a função printf. Tudo que deve ser mostrado na tela deve estar especificado dentro dos parênteses () e a mensagem deve estar dentro de aspas ("").

#include <stdio.h> // biblioteca padrão I/O de C int main (void) { printf ("Esta e uma mensagem sendo mostrada na tela"); return 0; }

Controle de texto

O controle de texto é importante pois melhora a legibilidade do usuário. Todos os controles são determinados pelo caractere barra invertida () e uma letra. Cada letra faz algo determinado, veja a tabela abaixo e o exemplo:

\n Pula de linha \t Adiciona tabulação \a Adiciona um bip \b Faz o cursor voltar um caractere \r Faz o cursor voltar a linha inteira

Funções de saída C++

As funções de saída de C++ são encontradas na biblioteca padrão de entrada / saída a iostream. No caso, para imprimir uma mensagem basta adicionar a linha com a função cout. Tudo que deve ser mostrado na tela deve ser especificado entre os acumuladores de saída (<<) e as aspas (“ ”).

#include // biblioteca padrão I/O de C++ using namespace std; int main (void) { cout <<"Esta e uma mensagem sendo mostrada na tela"; return 0; }

Exibindo resultado de variáveis

O que também podemos fazer é imprimir variáveis como por exemplo o resultado de uma soma.

#include using namespace std; int main (void) { int a, b, resultado; a=5; b=10; resultado=a+b; cout <<a<<" + "<<b<<" = "<<resultado; return 0; }

No exemplo acima, atribuímos os valores de 5 na variável a , 10 na variável b e guardamos o resultado de a+b na variável resultado.

Estrutura seletiva IF e ELSE

Uma ação muito importante, pois toma uma decisão definindo o que é verdadeiro e o que é falso. Capaz de definir caminhos diferentes de acordo com decisões que o próprio programa toma. Para isso, precisamos de uma estrutura seletiva da qual o único valor possível é o bit 1 ou 0, resumindo: retornar o valor VERDADEIRO ou FALSO.

Exemplificando: Se (IF) for tal coisa, faça isso! Caso contrário (ELSE), faça aquilo!

Usando IF

Para usar o IF basta digitar entre parênteses o que deve ser comparado.

Ou seja, for precisa de três condições. Vale salientar que essas condições são separadas por ponto-e-vírgula (;).

ITERAÇÃO é sinônimo de repetição.

O FOR também segue a mesma regra de IF. Caso haja mais de uma linha a ser executada pelo comando FOR, essas deverão estar agrupadas num bloco de dados ( { } ).

Estrutura de repetição - WHILE

Uma outra forma de iteração (repetição) em C/C++ é o WHILE.

While executa uma comparação com a variável. Se a comparação for verdadeira, ele executa o bloco de instruções ( { } ) ou apenas a próxima linha de código

WHILE (comparação)

Neste exemplo serão mostrados os números pares entre 0 e 100.

#include #include using namespace std; int main (void){ int par=0; cout <<"Os numeros pares de 0 a 100 sao:\n\n"; while (par<=100) { cout <<par<<"\t"; par+=2; //o mesmo que par=par+ } system ("pause"); return 0; }

O ideal é utilizar o WHILE em um loop definido pelo usuário, que a partir de uma entrada ele termine. Ou seja, enquanto o usuário não fizer determinada ação, o loop continuará a dar voltas.

#include #include using namespace std; int main (void){ int nr=1; while (nr!=0) //enquanto nr for diferente de 0 { cout <<"Digite um numero (0 para finalizar): "; cin >> nr; cin.ignore (); if (nr>0) cout <<"Este numero e positivo\n";

else cout <<"Este numero e negativo\n"; } return 0; }

No exemplo, o programa só irá parar quando o usuário digitar 0, qualquer outro número fará com que o programa continue dando loop. Perceba que a variável ainda está sendo inicializada.

Estrutura de repetição - DO WHILE

A estrutura de repetição DO WHILE parte do princípio de que deve-se fazer algo primeiro e só depois comparar uma variável para saber se o loop será executado mais uma vez.

Devemos proceder da seguinte maneira:

DO {bloco de instruções} WHILE (comparação);

Usamos DO, depois escrevemos tudo que o DO deve fazer no bloco de instruções, no final do bloco colocamos o WHILE com a comparação entre parênteses, e não se esqueça que neste caso termina-se a linha do WHILE com ponto-e-vírgula (;).

Switch e Case

Uma outra forma de estrutura seletiva é o SWITCH. Dentro dos switch há o case (que significa caso). Ou seja, é quase que um if com várias possibilidades, mas com algumas diferenças importantes.

1ª diferença: Os cases não aceitam operadores lógicos. Portanto, não é possível fazer uma comparação. Isso limita o case a apenas valores definidos.

2ª diferença: O switch executa seu bloco em cascata. Ou seja, se a variável indicar para o primeiro case e dentro do switch tiver 5 cases, o switch executará todos os outros 4 cases a não ser que utilizemos o comando para sair do switch. (Nos referimos ao BREAK).

Agora, que conhecemos diferenças importantes, vamos ver como proceder com o switch / case.

Primeiro o comando SWITCH e entre parênteses a váriavel na qual está guardado o valor que será avaliado pelo case. Então, abre-se o bloco de dados. Dentro do bloco de dados colocamos o comando CASE e logo após um valor terminando a linha com dois pontos (:). Preste atenção no tipo de dado que será colocado, pois há diferenças entre um dado e outro. Por exemplo: 1 não é a mesma coisa que '1' e 'a' não é a mesma coisa que 'A'...

Então, é estruturado os comando que serão executados pelo case, que seria isso:

SWITCH ( variável ){ CASE valor1 : Dados a serem executados BREAK ; CASE valor2 : Dados a serem executados BREAK ; }