URI1001 - Entrada e Saída de Dados

C

Extremamente Básico

O problema inicial solicita que o programa faça a leitura de dois valores do tipo inteiro, some-os, e exiba uma mensagem com esse resultado.

A primeira dúvida é: como ler um número digitado pelo usuário e armazená-lo em uma variável?

Estrutura básica de um programa em C

Todo programa em linguagem C é estruturado em funções.

Função

Uma função é um conjunto de instruções, ordenadas de forma lógica, de modo a atender um objetivo.

Uma função pode ter argumentos, que são variáveis que recebem dados a serem processados.

Uma função tem um parâmetro de retorno, que é uma variável com o conteúdo resultante do processo executado.

<tipo retorno> nome_da_funcao( <argumentos: tipo parametro, tipo parametro, ...> )
{
  
  // Conjunto de instruções
  // ordenadas logicamente
  // para atender o objetivo

  return( <retorno> );
}

As chaves { e } indicam o início e o fim de um bloco de código, são delimitadores de um trecho de código que estão unidos por uma condição ou função.

Tipo de dados

Um dado em computação é um número que é armazenado em um espaço de memória. O tamanho e o formato desse armazenamento definem o tipo de dado.

Os dados mais comuns em linguagem C são denominados int, char, float e double.

A unidade básica desses dados é o bit. O agrupamento de 8 bits é um byte.

Em grande parte dos processadores, ao agrupar 4 bytes, tem-se uma variável do tipo int.

Mais detalhes podem ser encontrados em wikibooks - Linguagem C.

Quando uma função não possui argumentos, pode-se deixar os parênteses sem declaração alguma ou utilizar a palavra reservada void, que indica que não há parâmetro alí, ou que é vazio.

Main

Todo programa em linguagem C deve possuir uma função principal, que obrigatoriamente é declarada como main(), que denota o início da execução do programa. As demais funções são executadas a partir da função principal, sendo o programador responsável pelo seu nome, mas aconselha-se que faça sentido em relação ao seu objetivo.

int main( void )
{

  return( 0 );
}

O programa principal aqui declarado não possui argumentos, assim declarado como void. Tipicamente um programa em linguagem C é executado a partir de outro programa, geralmente de um sistema operacional. Ao final da execução o sistema operacional deve receber um dado indicando o status da execução, ou seja, se houve algum erro por exemplo. O valor de retorno 0(zero) indica que a execução ocorreu sem problemas.

Periféricos

A execução do programa basicamente é realizada através do processador que lê dados nas memórias e manipula-os de acordo com a sequencia de instruções do programa, que é armazenada em uma das memórias.

Assim, tudo é leitura, manipulação e escrita de dados. A manipulação de dados envolve operações lógicas, aritméticas e de movimentação de dados.

Para um programa poder interagir um periférico como tela, teclado, mouse, impressora, câmera ou qualquer outro, é necessário que esse periférico esteja mapeado em uma região de memória, ou seja, um espaço de memória é reservado para configurar, parametrizar e trocar dados com o periférico.

Ao inserir um dispositivo novo ao sistema, um novo espaço deve ser mapeado, mas para computadores de uso geral, alguns dispositivos são denominados de padrão, ou seja, todo computador tem uma entrada padrão e uma saída padrão, que é o teclado e o monitor, respectivamente.

Para manipular dados nesses dispositivos padrão, é necessário incluir funções existentes na instalação do compilador no sistema operacional. Essas funções estão presentes na biblioteca stdio.h: Entradas e Saídas Padrão (Standard Input Output).

stdio.h

Para inclusão utilizar #include, indicar que a bilioteca é nativa da instalação < e > entre o nome da bilioteca, que deve possuir uma extensão .h para indicar que é o seu cabeçalho (header).

Os arquivos de inclusão não são os arquivos fonte, mas sim os arquivos de cabeçalho, que possuem as informações necessárias para a chamada das funções presentes nessa biblioteca.

#include <stdio.h>
int main( void )
{

  return( 0 );
}

Leitura e escrita de dados

A leitura de dados é feita utilizando a função scanf() e a escrita utilizando a função printf(), sendo que ambas utilizam uma quantidade variável de argumentos, mas seu primeiro argumento é um formato de caracteres.

O formato

Basicamente se trata de uma cadeia de caracteres (string) que possui uma mensagem a ser enviada à saída padrão, ou como devem ser lidos da entrada padrão.

"Mensagem de exibicao"

Podendo ser incluida a indicação de variável na posição que ela deve aparecer utilizando o % e o seu tipo.

"Exibe a variavel %d "

Após o formato são incluidas as variáveis que substituem as marcações na string, na ordem em que elas aparecem.

scanf()

Leitura de um dado que é armazenado na variável num.

int num;
scanf("%d", &num );

Leitura de dois dados que são armazenado nas variáveis A e B.

int A, B;
scanf("%d", &A );
scanf("%d", &B );

Ou ainda:

int A, B;
scanf("%d %d", &A, &B );

Os argumentos seguintes ao formato devem ser os endereços das variáveis que vão receber os dados lidos da entrada padrão conforme o formato do primeiro argumento.

print()

Exibição de dados da variável soma.

printf("X = %d", soma );

No lugar da marcação %d deve ser inserido o conteúdo da variável soma.

Todo apresentação de dados na plataforma URI devem possuir um fim de linha, denotado pelo caractere \n, equivalente à tecla Enter.

Resolução

O resultado completo para o desafio URI 1001 Extremamente Básico na minha formulação é:

#include <stdio.h>
int main( void )
{
  int A, B, xis;
  scanf("%d", &A );
  scanf("%d", &B );
  xis = A + B;
  printf("X = %d\n", xis );
  return( 0 );
}

Voltar